From 3808fd83a6f3cbbc741ef9493a57c93caab18539 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 12:50:22 -0600 Subject: [PATCH 01/21] feat(dokploy): add welcome modal to dokploy cloud --- .../dashboard/requests/show-requests.tsx | 2 +- .../settings/billing/show-billing.tsx | 6 ++ .../settings/billing/show-welcome-dokploy.tsx | 62 +++++++++++++++++++ apps/dokploy/components/layouts/navbar.tsx | 11 ++++ .../components/layouts/navigation-tabs.tsx | 2 +- apps/dokploy/pages/dashboard/projects.tsx | 13 +++- 6 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 apps/dokploy/components/dashboard/settings/billing/show-welcome-dokploy.tsx diff --git a/apps/dokploy/components/dashboard/requests/show-requests.tsx b/apps/dokploy/components/dashboard/requests/show-requests.tsx index 1b066529b..643d2bcb9 100644 --- a/apps/dokploy/components/dashboard/requests/show-requests.tsx +++ b/apps/dokploy/components/dashboard/requests/show-requests.tsx @@ -34,7 +34,7 @@ export const ShowRequests = () => { Request Distribution -
+
Showing web and API requests over time diff --git a/apps/dokploy/components/dashboard/settings/billing/show-billing.tsx b/apps/dokploy/components/dashboard/settings/billing/show-billing.tsx index 073b4598f..6590f2baa 100644 --- a/apps/dokploy/components/dashboard/settings/billing/show-billing.tsx +++ b/apps/dokploy/components/dashboard/settings/billing/show-billing.tsx @@ -1,3 +1,4 @@ +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { NumberInput } from "@/components/ui/input"; import { Progress } from "@/components/ui/progress"; @@ -148,6 +149,11 @@ export const ShowBilling = () => { : "lg:py-8", )} > + {isAnnual && ( +
+ Recommended 🚀 +
+ )} {isAnnual ? (

diff --git a/apps/dokploy/components/dashboard/settings/billing/show-welcome-dokploy.tsx b/apps/dokploy/components/dashboard/settings/billing/show-welcome-dokploy.tsx new file mode 100644 index 000000000..ca6a4daee --- /dev/null +++ b/apps/dokploy/components/dashboard/settings/billing/show-welcome-dokploy.tsx @@ -0,0 +1,62 @@ +import { ShowBilling } from "@/components/dashboard/settings/billing/show-billing"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { api } from "@/utils/api"; +import type React from "react"; +import { useEffect, useState } from "react"; + +export const ShowWelcomeDokploy = () => { + const { data } = api.auth.get.useQuery(); + const [open, setOpen] = useState(false); + + const { data: isCloud, isLoading } = api.settings.isCloud.useQuery(); + + if (!isCloud || data?.rol !== "admin") { + return null; + } + + useEffect(() => { + if ( + !isLoading && + isCloud && + !localStorage.getItem("hasSeenCloudWelcomeModal") && + data?.rol === "admin" + ) { + setOpen(true); + } + }, [isCloud, isLoading]); + + const handleClose = (isOpen: boolean) => { + if (data?.rol === "admin") { + setOpen(isOpen); + if (!isOpen) { + localStorage.setItem("hasSeenCloudWelcomeModal", "true"); // Establece el flag al cerrar el modal + } + } + }; + + return ( + <> +

+ + + + Welcome to Dokploy Cloud 🎉 + +

+ Unlock powerful features to streamline your deployments and manage + projects effortlessly. +

+
+
+ +
+
+
+ + ); +}; diff --git a/apps/dokploy/components/layouts/navbar.tsx b/apps/dokploy/components/layouts/navbar.tsx index 0b0e38ffa..cead46836 100644 --- a/apps/dokploy/components/layouts/navbar.tsx +++ b/apps/dokploy/components/layouts/navbar.tsx @@ -19,6 +19,7 @@ import { buttonVariants } from "../ui/button"; export const Navbar = () => { const router = useRouter(); const { data } = api.auth.get.useQuery(); + const { data: isCloud } = api.settings.isCloud.useQuery(); const { data: user } = api.user.byAuthId.useQuery( { authId: data?.id || "", @@ -130,6 +131,16 @@ export const Navbar = () => { Settings + {isCloud && data?.rol === "admin" && ( + { + router.push("/dashboard/settings/billing"); + }} + > + Billing + + )} { router.push(tab?.index || ""); }} > -
+
{tabMap.map((tab, index) => { if (tab?.isShow && !tab?.isShow?.({ rol: data?.rol, user })) { diff --git a/apps/dokploy/pages/dashboard/projects.tsx b/apps/dokploy/pages/dashboard/projects.tsx index b14c9e32e..283a7c6e5 100644 --- a/apps/dokploy/pages/dashboard/projects.tsx +++ b/apps/dokploy/pages/dashboard/projects.tsx @@ -1,14 +1,21 @@ import { ShowProjects } from "@/components/dashboard/projects/show"; +import { ShowWelcomeDokploy } from "@/components/dashboard/settings/billing/show-welcome-dokploy"; import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { appRouter } from "@/server/api/root"; import { validateRequest } from "@dokploy/server"; import { createServerSideHelpers } from "@trpc/react-query/server"; import type { GetServerSidePropsContext } from "next"; -import React, { type ReactElement } from "react"; +import type React from "react"; +import type { ReactElement } from "react"; import superjson from "superjson"; const Dashboard = () => { - return ; + return ( + <> + + + + ); }; export default Dashboard; @@ -35,7 +42,7 @@ export async function getServerSideProps( }); await helpers.settings.isCloud.prefetch(); - + await helpers.auth.get.prefetch(); if (!user) { return { redirect: { From 7d882b3df5b0978da52bbcc3ebf9b42213daf908 Mon Sep 17 00:00:00 2001 From: MD Mahbub Hasan Date: Mon, 28 Oct 2024 01:40:26 +0600 Subject: [PATCH 02/21] style(ui): update template selection view --- apps/dokploy/components/dashboard/project/add-template.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/dokploy/components/dashboard/project/add-template.tsx b/apps/dokploy/components/dashboard/project/add-template.tsx index cf0f7e03e..2062c9d7e 100644 --- a/apps/dokploy/components/dashboard/project/add-template.tsx +++ b/apps/dokploy/components/dashboard/project/add-template.tsx @@ -54,6 +54,7 @@ import { cn } from "@/lib/utils"; import { api } from "@/utils/api"; import { ScrollArea } from "@radix-ui/react-scroll-area"; import { + BookText, CheckIcon, ChevronsUpDown, Code, @@ -249,7 +250,7 @@ export const AddTemplate = ({ projectId }: Props) => { "text-sm text-muted-foreground p-3 rounded-full hover:bg-border items-center flex transition-colors" } > - + )} {
-

+

{template.description}

From 3f40ad32500cd23a8efe1856954c627c4ff16232 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 14:12:45 -0600 Subject: [PATCH 03/21] fix(dokploy): prevent to have pending connections docker logs --- .../dashboard/docker/logs/docker-logs-id.tsx | 37 ++++++++++--------- .../server/wss/docker-container-logs.ts | 9 +++++ 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx b/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx index ca9dbbb6a..4ae3c3750 100644 --- a/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx +++ b/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx @@ -18,24 +18,28 @@ export const DockerLogsId: React.FC = ({ }) => { const [term, setTerm] = React.useState(); const [lines, setLines] = React.useState(40); - const wsRef = useRef(null); // Ref to hold WebSocket instance + const wsRef = useRef(null); useEffect(() => { - // if (containerId === "select-a-container") { - // return; - // } + if (containerId === "select-a-container") { + return; + } + + if ( + wsRef.current && + (wsRef.current.readyState === WebSocket.OPEN || + wsRef.current.readyState === WebSocket.CONNECTING) + ) { + wsRef.current.close(); + wsRef.current = null; + } + const container = document.getElementById(id); if (container) { container.innerHTML = ""; } - if (wsRef.current) { - console.log(wsRef.current); - if (wsRef.current.readyState === WebSocket.OPEN) { - wsRef.current.close(); - } - wsRef.current = null; - } + // Crear nueva instancia de Terminal const termi = new Terminal({ cursorBlink: true, cols: 80, @@ -45,7 +49,6 @@ export const DockerLogsId: React.FC = ({ fontSize: 14, fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace', - convertEol: true, theme: { cursor: "transparent", @@ -54,10 +57,10 @@ export const DockerLogsId: React.FC = ({ }); const protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; - const wsUrl = `${protocol}//${window.location.host}/docker-container-logs?containerId=${containerId}&tail=${lines}${serverId ? `&serverId=${serverId}` : ""}`; const ws = new WebSocket(wsUrl); wsRef.current = ws; + const fitAddon = new FitAddon(); termi.loadAddon(fitAddon); // @ts-ignore @@ -76,17 +79,17 @@ export const DockerLogsId: React.FC = ({ ws.onclose = (e) => { console.log(e.reason); - termi.write(`Connection closed!\nReason: ${e.reason}\n`); wsRef.current = null; }; + return () => { if (wsRef.current?.readyState === WebSocket.OPEN) { - ws.close(); - wsRef.current = null; + wsRef.current.close(); } + wsRef.current = null; }; - }, [lines, containerId]); + }, [containerId, lines]); useEffect(() => { term?.clear(); diff --git a/apps/dokploy/server/wss/docker-container-logs.ts b/apps/dokploy/server/wss/docker-container-logs.ts index 63a0b89e6..982bf3f5d 100644 --- a/apps/dokploy/server/wss/docker-container-logs.ts +++ b/apps/dokploy/server/wss/docker-container-logs.ts @@ -43,6 +43,15 @@ export const setupDockerContainerLogsWebSocketServer = ( ws.close(); return; } + + const pingInterval = setInterval(() => { + if (ws.readyState === ws.OPEN) { + ws.ping(); + } + }, 30000); + + ws.on("close", () => clearInterval(pingInterval)); + try { if (serverId) { const server = await findServerById(serverId); From ae5df828879926b56c135d4ac4bab7e7dfa26a16 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 15:09:27 -0600 Subject: [PATCH 04/21] refactor(dokploy): terminate connections --- .../server/wss/docker-container-logs.ts | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/apps/dokploy/server/wss/docker-container-logs.ts b/apps/dokploy/server/wss/docker-container-logs.ts index 982bf3f5d..d704467c0 100644 --- a/apps/dokploy/server/wss/docker-container-logs.ts +++ b/apps/dokploy/server/wss/docker-container-logs.ts @@ -5,6 +5,11 @@ import { Client } from "ssh2"; import { WebSocketServer } from "ws"; import { getShell } from "./utils"; +function heartbeat() { + // @ts-ignore + this.isAlive = true; +} + export const setupDockerContainerLogsWebSocketServer = ( server: http.Server, ) => { @@ -44,14 +49,10 @@ export const setupDockerContainerLogsWebSocketServer = ( return; } - const pingInterval = setInterval(() => { - if (ws.readyState === ws.OPEN) { - ws.ping(); - } - }, 30000); - - ws.on("close", () => clearInterval(pingInterval)); - + // @ts-ignore + ws.isAlive = true; + ws.on("error", console.error); + ws.on("pong", heartbeat); try { if (serverId) { const server = await findServerById(serverId); @@ -147,4 +148,18 @@ export const setupDockerContainerLogsWebSocketServer = ( ws.send(errorMessage); } }); + + const interval = setInterval(function ping() { + for (const ws of wssTerm.clients) { + // @ts-ignore + if (ws.isAlive === false) return ws.terminate(); + // @ts-ignore + ws.isAlive = false; + ws.ping(); + } + }, 30000); + + wssTerm.on("close", function close() { + clearInterval(interval); + }); }; From 5c85b82257f0a04fd332243484bed9e883ba2827 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 17:35:19 -0600 Subject: [PATCH 05/21] refactor(dokploy): revert --- .../dashboard/docker/logs/docker-logs-id.tsx | 37 +++++++++---------- .../server/wss/docker-container-logs.ts | 24 ------------ 2 files changed, 17 insertions(+), 44 deletions(-) diff --git a/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx b/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx index 4ae3c3750..ca9dbbb6a 100644 --- a/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx +++ b/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx @@ -18,28 +18,24 @@ export const DockerLogsId: React.FC = ({ }) => { const [term, setTerm] = React.useState(); const [lines, setLines] = React.useState(40); - const wsRef = useRef(null); + const wsRef = useRef(null); // Ref to hold WebSocket instance useEffect(() => { - if (containerId === "select-a-container") { - return; - } - - if ( - wsRef.current && - (wsRef.current.readyState === WebSocket.OPEN || - wsRef.current.readyState === WebSocket.CONNECTING) - ) { - wsRef.current.close(); - wsRef.current = null; - } - + // if (containerId === "select-a-container") { + // return; + // } const container = document.getElementById(id); if (container) { container.innerHTML = ""; } - // Crear nueva instancia de Terminal + if (wsRef.current) { + console.log(wsRef.current); + if (wsRef.current.readyState === WebSocket.OPEN) { + wsRef.current.close(); + } + wsRef.current = null; + } const termi = new Terminal({ cursorBlink: true, cols: 80, @@ -49,6 +45,7 @@ export const DockerLogsId: React.FC = ({ fontSize: 14, fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace', + convertEol: true, theme: { cursor: "transparent", @@ -57,10 +54,10 @@ export const DockerLogsId: React.FC = ({ }); const protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; + const wsUrl = `${protocol}//${window.location.host}/docker-container-logs?containerId=${containerId}&tail=${lines}${serverId ? `&serverId=${serverId}` : ""}`; const ws = new WebSocket(wsUrl); wsRef.current = ws; - const fitAddon = new FitAddon(); termi.loadAddon(fitAddon); // @ts-ignore @@ -79,17 +76,17 @@ export const DockerLogsId: React.FC = ({ ws.onclose = (e) => { console.log(e.reason); + termi.write(`Connection closed!\nReason: ${e.reason}\n`); wsRef.current = null; }; - return () => { if (wsRef.current?.readyState === WebSocket.OPEN) { - wsRef.current.close(); + ws.close(); + wsRef.current = null; } - wsRef.current = null; }; - }, [containerId, lines]); + }, [lines, containerId]); useEffect(() => { term?.clear(); diff --git a/apps/dokploy/server/wss/docker-container-logs.ts b/apps/dokploy/server/wss/docker-container-logs.ts index d704467c0..63a0b89e6 100644 --- a/apps/dokploy/server/wss/docker-container-logs.ts +++ b/apps/dokploy/server/wss/docker-container-logs.ts @@ -5,11 +5,6 @@ import { Client } from "ssh2"; import { WebSocketServer } from "ws"; import { getShell } from "./utils"; -function heartbeat() { - // @ts-ignore - this.isAlive = true; -} - export const setupDockerContainerLogsWebSocketServer = ( server: http.Server, ) => { @@ -48,11 +43,6 @@ export const setupDockerContainerLogsWebSocketServer = ( ws.close(); return; } - - // @ts-ignore - ws.isAlive = true; - ws.on("error", console.error); - ws.on("pong", heartbeat); try { if (serverId) { const server = await findServerById(serverId); @@ -148,18 +138,4 @@ export const setupDockerContainerLogsWebSocketServer = ( ws.send(errorMessage); } }); - - const interval = setInterval(function ping() { - for (const ws of wssTerm.clients) { - // @ts-ignore - if (ws.isAlive === false) return ws.terminate(); - // @ts-ignore - ws.isAlive = false; - ws.ping(); - } - }, 30000); - - wssTerm.on("close", function close() { - clearInterval(interval); - }); }; From 0e8a3c36f3a6f23d152ff45948a5853a3225ab60 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 18:12:23 -0600 Subject: [PATCH 06/21] feat(dokploy): add stirling --- apps/dokploy/public/templates/stirling.svg | 17 ++++++++++++ .../templates/soketi/docker-compose.yml | 27 ++++++++++++------- .../templates/stirling/docker-compose.yml | 12 +++++++++ apps/dokploy/templates/stirling/index.ts | 22 +++++++++++++++ apps/dokploy/templates/templates.ts | 14 ++++++++++ 5 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 apps/dokploy/public/templates/stirling.svg create mode 100644 apps/dokploy/templates/stirling/docker-compose.yml create mode 100644 apps/dokploy/templates/stirling/index.ts diff --git a/apps/dokploy/public/templates/stirling.svg b/apps/dokploy/public/templates/stirling.svg new file mode 100644 index 000000000..0db55164b --- /dev/null +++ b/apps/dokploy/public/templates/stirling.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/apps/dokploy/templates/soketi/docker-compose.yml b/apps/dokploy/templates/soketi/docker-compose.yml index 1784cdc79..2df681652 100644 --- a/apps/dokploy/templates/soketi/docker-compose.yml +++ b/apps/dokploy/templates/soketi/docker-compose.yml @@ -1,12 +1,19 @@ -version: "3" - +version: '3.3' services: - soketi: - image: quay.io/soketi/soketi:1.4-16-debian - container_name: soketi + stirling-pdf: + image: frooodle/s-pdf:0.30.1 + ports: + - '8080' + volumes: + - training-data:/usr/share/tessdata #Required for extra OCR languages + - extra-configs:/configs + # - /location/of/customFiles:/customFiles/ + # - /location/of/logs:/logs/ environment: - SOKETI_DEBUG: "1" - SOKETI_HOST: "0.0.0.0" - SOKETI_PORT: "6001" - SOKETI_METRICS_SERVER_PORT: "9601" - restart: unless-stopped + - DOCKER_ENABLE_SECURITY=false + - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false + - LANGS=en_GB + +volumes: + training-data: {} + extra-configs: {} \ No newline at end of file diff --git a/apps/dokploy/templates/stirling/docker-compose.yml b/apps/dokploy/templates/stirling/docker-compose.yml new file mode 100644 index 000000000..1784cdc79 --- /dev/null +++ b/apps/dokploy/templates/stirling/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3" + +services: + soketi: + image: quay.io/soketi/soketi:1.4-16-debian + container_name: soketi + environment: + SOKETI_DEBUG: "1" + SOKETI_HOST: "0.0.0.0" + SOKETI_PORT: "6001" + SOKETI_METRICS_SERVER_PORT: "9601" + restart: unless-stopped diff --git a/apps/dokploy/templates/stirling/index.ts b/apps/dokploy/templates/stirling/index.ts new file mode 100644 index 000000000..a8df5e339 --- /dev/null +++ b/apps/dokploy/templates/stirling/index.ts @@ -0,0 +1,22 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 8080, + serviceName: "stirling-pdf", + }, + ]; + + return { + domains, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 372af8bb4..86eb99426 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -557,4 +557,18 @@ export const templates: TemplateData[] = [ tags: ["cloud", "monitoring"], load: () => import("./portainer/index").then((m) => m.generate), }, + { + id: "stirling", + name: "Stirling PDF", + version: "0.30.1", + description: "A locally hosted one-stop shop for all your PDF needs", + logo: "stirling.svg", + links: { + github: "https://github.com/Stirling-Tools/Stirling-PDF", + website: "https://www.stirlingpdf.com/", + docs: "https://docs.stirlingpdf.com/", + }, + tags: ["pdf", "tools"], + load: () => import("./portainer/index").then((m) => m.generate), + }, ]; From cf666ceb19672c0cda4a963ee1c1ea296b994bde Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 20:48:42 -0600 Subject: [PATCH 07/21] feat(dokploy): add lobe chat --- apps/dokploy/public/templates/lobe-chat.png | Bin 0 -> 9294 bytes apps/dokploy/server/api/routers/compose.ts | 4 ++-- .../templates/lobe-chat/docker-compose.yml | 12 ++++++++++ apps/dokploy/templates/lobe-chat/index.ts | 22 ++++++++++++++++++ apps/dokploy/templates/templates.ts | 16 ++++++++++++- 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 apps/dokploy/public/templates/lobe-chat.png create mode 100644 apps/dokploy/templates/lobe-chat/docker-compose.yml create mode 100644 apps/dokploy/templates/lobe-chat/index.ts diff --git a/apps/dokploy/public/templates/lobe-chat.png b/apps/dokploy/public/templates/lobe-chat.png new file mode 100644 index 0000000000000000000000000000000000000000..cc29879cf45b0e3ba319e05068d8dbc09d3a4878 GIT binary patch literal 9294 zcmWk!c{J3I7yZnb8Ds3(#u7vJ$}UTmu|@V!)@<2Iwy4N5i+vYm3NeZhk|bmsOCgCU zYiTT5l8hw=v;4llch0-_+&}Jlf4y_=dFQ3u+nRGCL=XS~a9*@9b@-1-|8F?Uf9MY` z(F6c6-QL>C>_7RV^8MWN%H`sMiK4-y)(1ici}NNMA`v-i%1yyn4L3 zNZ(#&?ya8Y)Y;7pqxWNIop+8Jf{vQPsMY>QZ|~6B1LyyhJPx`#lx3kVigjdsAy{X}T zjBi&Qt)8#mFPexjeVdk-W2 z#C!C|bdF&f1MMp*WepoR%cY=G*ZeCt!gyWubGGlYgaoFUYWS_0DAs2T9nJPc1a<8? zn3h^auimkn$*#+>z5miRGsGxmIj`fc)q};G7NyBUH*Y`M?<}S-55IP}{jWNE&?|JV z_-#+fOZ?rM55X078Q3ywGdK#g5AHFAoc{qx8xIRBE^fR))Jy(me=tM{6C>G3R`N%KZR$wI{} zK3Y#Nq)DF9P#IHs#Qp*9#}Sy8ICxIb=G-M0jl1QU-u6P@(&mkS{@l9z`E!%2kX!cE zy%;f7~T_rhby=L!9qKOioB0g2G=tKD;(QMzSRHBLQP@3WqaT^`SdQH}~w>Fz`AfxX{hE zl02)YIf#TH36EK94v8KYk_YZ0*m4Srr#F2tYg4;K3#gTRUea>hiLVvq|7=04or#^- z>^~q+FzA-A_f&O#Xove-P2K#DBvB-3mH1baUUM5uv+he)WJts9zh2j}y`*KuXxUYl z(l!S-r}%I8dG{jr&o%C!9cGA+~#F=F>cwtFz0UW(V;=Kodowf4*=b#~L?Pv{_g)~Q}?>zEn%r^sj+}s#3@msj1 z(SO$(pPZZwYuSDtawj%%&(Uq3v=!s`pAmSAtwS|xRYSN)@DB4*!UBf6bb5P<2kOii z^x7MCp+-At8U?;>=Jkn3YKaImWq6FE*yfs=g5HmAI1WzFA^Mq{bM$w@xZM-S-IA@S zHCjR9&%Q9xTQPb!)>SjBf}h{hI+1L!{H(~q$;_gcO8{kLMrQ2(kT_#+l{S?(Y5-7c z!CB-T2{D?|y@|q9#&|w;Du7(}A}v12CAZEhS))}Ohd^dfP1Dp9de|=r<#j`%zh-xd z=YiIE<2XD-5BJ-B&5x{d&o#<CN=s##;YjFmu26M2 zILC>NBvJtR<}GzY7TeNTW)>Ew*OkPhGQKnLTPS|JTc-xbQ#q%6v}|}1MhT25mxjJH zu1UhLy%SGF32SnZK)3nP&^<3;Qgcq6n8?4nHpp=E0t*VMVl95H?ME6tVt3fH6wW~q z8)D8@3nas^Y}NRC5`dfzJU9!Flc*t1h5#>=^h5^~(%-(z+_oLG8x7d6o|LrFHr zD!?9%8w{%pOJjWZU=#8WH&K7{M*0Xfu)J$@kE@tJ+C~N+MVi0e*V`fu%N(Kfci} z*GL@|dgaV`%G_I@NR|M}BEQ$>a=MfEe1QSlH-wuiE6<^$k(-5|s}~x2LVL;e8Lyp8 z@51_Z#pv|ln3#Zo0O%Uzvi4;oRP>VI;-?5Wfp`)ck6VURr7{p#j&o;#WEW! ztYvGWmE8Aq!#-(y3UzyLuhvYH!ZNiE3-sY`e_| zMcl;QRRfwBAq-z7>umx*x#*+p_;niXv_hUR{IRvb0N;K@@tzKvCb2j!-Tfxg|7ZB= z>YtD8Y(s6pO-X{m8o(|vv0*s;y&IG2Ddw$6&ds|i2yy~o?DE7+V4HP}z#eXqFL*z; zS|AA|?b8j#7=z~{u)^4@Udv$<{wJsct9W)H7)z8k73wB|r1#*DDXiUBP36hhVny_NG1e^0`;*9`!X)#7wSh%%*%;rWUjUtPb_9u8 zncQ@5q4=vIZ|3~z>;XS{Rbqq=Kvw)U-Kz0u>N zk_q^|?!Zr?$_8b-@uRVykMCJa;w1O{2+lqx2agQn7|8~C;oQ`0^P7|ggscVHcH#*^ zVL_sRB}Vs(V*M6Dx$M>nc_Wk`W%)FOhaX@h?VQSJVB?b0Tzg4A%i)5iI@VMvyl>&E z{6*hso5%snEIQ-#*imdr5*YAmch9F%>1xuh0~*V@7b@GL?iWliSYS0soU`UNgs9wq z2R~y%Qbgh|3!p(f_6hH`5T32c1DtBn6#@`Z@5Bf=lEEK&+AybPe0)*^!niA_%MSXW zTtnKjdwoBj43tr~eE0bi-cJcG;|-qTy}hBO#jponkR2WiNrWwH{95q397OCdiyUV) z4vtJrg;Q1OtkmNUgB(Q?z$&aEBJ_^K6sv~oZ0O)e?O_ItfSxB*`pyZ_B&cT}n!=lK z#I_y$6?^hXR3$pD+zP<-`6bYjuoQQimQR8lE?ECpV%eEI2NrmpF>o>Kbw=nrEq;T--2wGBRbtv^S?wlzytDPXXW zxI3thJ#0fgp)n|Ya^Tv=xK?}HI)*rc-Ub^%Jd+keBQQLpA0MDW0pD9>OjM5AAsfVF}K znx9uM7L(`rb&+_&H5p4eM`v|XIsBs;;3+zq0H zz;^*qsaXqW_b52gOaT6bDK%M;qb%m30luN~U^NCVKq6j%X`5o&g`CmOQ-Ckww!OY)|Jo>PygsVS;M+EWokQB4RL2mdR zE9fnT`eW-ip1CmSi!%Dsxz7gMxnbUSL;dfBgeVUql0qq&u}%IWhA%mzILmEc8Y`Gf zX{J+Zdw`Qh(6gw-ue_t@)xfW3x?I>t}h!1pAj(JOurhb_S*apdIS!F>Gp3Sk(v>t4OJBoK(^ z%|%u1P~R%G%B4z;#Y8R4zwwhhadFBT(aRlIEb*d;YLV9MPTqu2y*e!SrLQ&4&%2yC zm%Xe_&3vrhHP6}#KI^^W&@j{-8Ngo|ydEV&t5bQ3ko}I^31;EW#?}M0^F!htGNDWX zhDOdK~j{eN`teg@@QzwXMB1JVL5lX z3WfO4B*1~JWb-Ge-MWvijNTaOoBlGPB-(2Dlyy61UM{TcZsxnAOPH{^v*+J*|2%$v z-AeroRmyANT-3h_umGG%Sj&Z$kSJiHA^)EM(1ARb{wszM_u6Ay*^Y3!Bni)H!E+=k zP$J$8EJv{ARe`y@$xr6*vpuN7djQAGId!i#^1l=;{ZN8+tdv%Rm5SDb(mlhjU%#G^ z;DwDwgp*bqsg6DALvk(Ups|^<(M}8-X9D$2tGfGN4!7Y_ zDtCko(L-rtU@Pt^90`>7D(R@qfOK9#&+HESX3PA~Cn@a;ps256r=WST zYw`EqIXo^Z8qYz9Wbb{;Y;NWjrU+NHz>kpLx6u2k59dd?*O)<>(Ff$qvphi}-~B7q z^y@bsIi8^fM~uOOZ^?#LJoc%$Xd(S&QMlOpV||(8Ihqn8t~ZLND@?xEZ?fK!)sd7vq2QXTst~V@45iZ&Y#a|GxU6jKna6kZ)j6ctv3$-WNMLLaecP`^oc>(!Hj2>L6!ZM z_4Jz5w$_jvCwXLI1JR}57)kEhFKxR8MGKeDLDKUdUn(SunYGA+EYbtYJpG?~1}fRb zhxPc>k66!rqPk+6UJdM9R|(;CU6)XUh9drKh^7|O&)tqOcF-kIJD>Dk-_^r39bI+? z11RuehD1hcA3HBQEmwQB=UMbhJEc9H>4m4Fjtk{n1bN@^!zhIkYIgJ&t5P8tzWKiU zO6czGl>m40?A6jty(icFMm^vJvmWbpivHl+kWq12Q%`A?j(BcYLW_00mUTqg@TB`M zQBMv%jf(hIk)gi>ZC(yrN^%)ACoxxR`E#h&hq#+6`9XLgRkA`L zKPTio)F>^+ABzIdNrbB&)AnP2 zKAv$L!h~^v@PF*Wt?w*hM1{`Izc%q$Zn#Gt+$({FQ0JAv)g@Tb2=;fw#=@PQo(Ab) z;?ywhS&^(6^99w`AF{M6&u@nZ@QqYu87z7B1S+xRk;O3R9^ieS`DCbK^@$_>RC;vB zSx6TTNn5Gbw6=8^@~7;SJZr1=Usu3%EViAcr(0RGcw}{V##*2@==jj9bC*l(pCdyv zU(QY@6zop;2(nnZDg|(?zqwogRZpK00pFx+TdcMfU`qMf48~OcHN~s(e3=pxqchC% z8zQ3e=~j^F*hUDM7HStvfZtmZ=PA0lz1Wb$Es^hOVpmGj4Ii!le6tJr1!)j_m_LXZMS-O7NLwYy-Y$JL%d4qQfyQE(*LLzraHCf;jcj^hg0l{Bf|O7&%yUj*dt+Sbd1 z+t#HY6UyUclbKQgytHl?!oJ-tiB2J177dVlzSD-gZ%3Yg7FaVkFjrQJk(x5~mi!Kk zvvP|E0Tw_Ssth+fdXM-H1bh$V9lHqixeY(omIfD)I%6HohF*F^nKz`Qf3@Sq2E%nd zpf3%=xKtp(i7}S2B^92L1j@ewNj4P#zG4e0QweV^vfgZd)MvOnl~>9eaQN^G;H1hB z@`ht&1$bRrlmB76`gGu^0xW=jo6y&)HKTMxZKiR`xV|1E0k{dxPD5T9flaE}j-#iJ z#VlEpcJ(*sH$j773&;zd$2aW^LY9Wak*@5KKmzz2KIUbLHV8t&u$BBwjkP4EpTMiI zu9uf}1s|MIkW43|RDN5l&1narpOD}nD)1drgyJ+^$Oi@!4s}UDpa!~$ElGC1zg$4+ zPh*5K?=tA-Vao86A-Ox7ddfEW>JuO+P*Z;G7jWjCE=ZPCtcJ}DEaCtl_iVg>z*G$V z4rnD0^8h_};oKnbDIBu@!}xC;0jmL;vX_Ujft-d6SUhMLz!K$t zLKkcRmo^z`V0{Y;2gJUIgz^`8hbX35RyzY}$Pw3p9pJSH zvq(qA6!^wL%(z$`B_ah-CB9v3WZ|J0%YL*o>EKFQcFcyc@Ni5YY0;}|^Dyr|%8||N zJqF)#k!Bn#fk!C-u#xpD3Q&BTX~u=~Odokl(1`HT0wCgo&&nQ2eExGq{^xt+Jlz)i zg}|4n^K9j*R_#>lPBx%`q)|8KjqRSw1H^(7?X%+Rj7Vd%Z6_na?~_TH*wceoz7Rav z!?_8YDbu=eimZdct*~3vyO205ll}EZ6+nOg^QAM^;FUY12FcR&zmEZUp&OPS3I4Xr z1ch(2vt)_f&br`%Lz8%E6sbIjJn(EiPXmcZYmD5v94vvB(l!QW7*ip*vu}WZ;W2!s zDAX=b5mqs+!pk`|fp_LQJXYnD0H;}h`8WGQZ>8f)4QV{jH0>^ye7|*~b$BEEI$sd5 zW0!lyctsd6cax5e?*qu6u0%XJSd7W&`V@3}ZXg-1GLAj?OG`6+$L16xARmHP)&2z)aJ*BQW6jzr4KZ$eOHj{a_0>O;ksYJGXFAPeZj$+7D%#nVZbwVCVY z;d+E`QXc1ipX$tGPYPIT&-_S(>jQum{#jd(x(@VU7c?mC=3r8Fs*(97LcM0Wa$F+F z^VBRC-6BwL>h}dZx9l$#qdiJcg>Kc0IKZEmW*b;ui<$xj`P2}1M11kpUp_ojDvj#q=e7l&*0H0sAx}!ELn%We_P`>cUH0z}OLAx)#!C7x)v zYQJm=D{uVU+sC=kcw9kiw1bTK@)2%TbQ5_XHfx(|qIQVCM*tSkpKPH|G5Y zkz_$H?7cTg;a1rPPt!1CC6mH%d>K|b01E+2!C8o#6XDB;Tkja{%a{U9bm7v(lN{iU za1T4t#5^;kMeSH`!ENVGJN>_7D?!;SKRy%1!;(mL&Pyl%h&|I=yz#wk|MPTnx(dgV zWRD|!LCJ6DJ54l$P$6yP&aHR?pIDKJLKvTerrHmV4~-ZN`rS9?WhUith0e66J>@ZH z^ZU)S9rN?x_;2Sf-wlhWygMGEr`IXR@uSB-WK`c0zG6{t@Hdl0f2I|mWbg-|BgJRl zpuERJfAlP9koi%xc(1gT`GJ>4<2V>;@9bPFU)j4w%a`d-&G&Dh^(%Zi)I>=ld;j=# z4|p1J$#~o;tj`yl@vK>`?)dUljnH|AuDH45h<3sBB#||UYPao}6pOUU15I=mE?{83 zNrKs`R$MXxo$TTuuT0!jdwliqOU|DZLB=H$2!ELK(Vm53SY<*DivW?kS2)Jv2YAXKv;u^Mnirt zE&U8MJkF8i3499@LWf1MbWw(B5>$33;mZ8r3}O&{7ZAe2KD_@d@%$0Ie->cJdQuhQ zDXI6^Ja3)~5KEvX8iT?&*p4z3s0F+N4 z$WPIGkNe!y`wB!5$P{|UP{@0VSwwI*?x_8Hp=$wQ4|Pl|!z;f??mVzZghO}~0m|^Q zxnj3EPqHjq5Y${x5yo6zu88i{N(cYY*LeyiHGn&yNKD?s09(`yERE8KhQ7fsLTHdJ zQx1~XpX|roMerby3$rIr-~r|k=6gSenAPtA;&^VkrD!ep-lWg#_95%w_~C82c37(o zhwr(ylS19>f7`9=`VJN&!Z;X;GBPNdhEcEbZa0EOzB+NiPE<@>!gY;s(Sd6qwO1MZ zaTNR(q>I60+7yy}$+~|sjr}<0JKpT&h720<&wFEE)1<@OZKx*}xY^q(<+g_Zp`W^w zo+F^=qUqz~!Pe{zpJ-pzS-xILAQO&QSrZIeG9YgrwrD=b_j?;I4w!OF$kE!h$6*JL zy8rHQ=X0nsdh&aIWD{YZ8qya(tTDvHn>Osq+uoI}gsEagK^RWf1wu5wB??oTJeDVuLqiLXqXT+fDVim-%$#M^J}q&HDfRd;LDn9$+wk0;O# zT>qLR`AazbHbc-2!dNC*SDE>{fZN{qLiuNzYSZ<)pH(f0;p-N!+x^K`<6IfRJy5yP zU!(UGz28j0z6g)oy*5*G--H;14rKkXS-N(Q5zvvzL$1rNnx5Hj1FHfp-xz|RM7g2KJofq^xGabl00b0Z%DG` zRA7^=|0ZReyY?*DG1H|oO0#Y`lBwZo-(`tVEEl|QGu0|@;1Rt&wLqv|)$gv;4-&ZW zYy)C!y%l@-y-0csdZ*B7QSHo4vSg~$CB@X9qp@OsMWZxXYZh{Y9MgKH{%%i>3-zNe z?f217%V-=o`}lM~oT#kw)w8Jy3UB@rKpW$+wG(*e^>nMfYWk iZ@wP-4|WC)*}lY}A4tk3#r*dd0bDe*HGOI9jsG9EqjypO literal 0 HcmV?d00001 diff --git a/apps/dokploy/server/api/routers/compose.ts b/apps/dokploy/server/api/routers/compose.ts index e9ccd33b2..441e1f80f 100644 --- a/apps/dokploy/server/api/routers/compose.ts +++ b/apps/dokploy/server/api/routers/compose.ts @@ -357,9 +357,9 @@ export const composeRouter = createTRPCRouter({ const generate = await loadTemplateModule(input.id as TemplatesKeys); const admin = await findAdminById(ctx.user.adminId); - let serverIp = admin.serverIp; + let serverIp = admin.serverIp || "127.0.0.1"; - if (!admin.serverIp) { + if (!serverIp) { throw new TRPCError({ code: "NOT_FOUND", message: diff --git a/apps/dokploy/templates/lobe-chat/docker-compose.yml b/apps/dokploy/templates/lobe-chat/docker-compose.yml new file mode 100644 index 000000000..676140903 --- /dev/null +++ b/apps/dokploy/templates/lobe-chat/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.8' + +services: + lobe-chat: + image: lobehub/lobe-chat:v1.26.1 + restart: always + ports: + - 3210 + environment: + OPENAI_API_KEY: sk-xxxx + OPENAI_PROXY_URL: https://api-proxy.com/v1 + ACCESS_CODE: lobe66 \ No newline at end of file diff --git a/apps/dokploy/templates/lobe-chat/index.ts b/apps/dokploy/templates/lobe-chat/index.ts new file mode 100644 index 000000000..a07a4e09a --- /dev/null +++ b/apps/dokploy/templates/lobe-chat/index.ts @@ -0,0 +1,22 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 3210, + serviceName: "lobe-chat", + }, + ]; + + return { + domains, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 86eb99426..c43ffc200 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -569,6 +569,20 @@ export const templates: TemplateData[] = [ docs: "https://docs.stirlingpdf.com/", }, tags: ["pdf", "tools"], - load: () => import("./portainer/index").then((m) => m.generate), + load: () => import("./stirling/index").then((m) => m.generate), + }, + { + id: "lobe-chat", + name: "Lobe Chat", + version: "v1.26.1", + description: "Lobe Chat - an open-source, modern-design AI chat framework.", + logo: "lobe-chat.png", + links: { + github: "https://github.com/lobehub/lobe-chat", + website: "https://chat-preview.lobehub.com/", + docs: "https://lobehub.com/docs/self-hosting/platform/docker-compose", + }, + tags: ["IA", "chat"], + load: () => import("./lobe-chat/index").then((m) => m.generate), }, ]; From 985c7515b184ab0ede85308089c187092840dc79 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 21:00:37 -0600 Subject: [PATCH 08/21] refactor(dokploy): add promotion codes --- apps/dokploy/server/api/routers/stripe.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/dokploy/server/api/routers/stripe.ts b/apps/dokploy/server/api/routers/stripe.ts index ccfa162f1..0f794a5d8 100644 --- a/apps/dokploy/server/api/routers/stripe.ts +++ b/apps/dokploy/server/api/routers/stripe.ts @@ -80,6 +80,7 @@ export const stripeRouter = createTRPCRouter({ metadata: { adminId: admin.adminId, }, + allow_promotion_codes: true, success_url: `${WEBSITE_URL}/dashboard/settings/billing`, cancel_url: `${WEBSITE_URL}/dashboard/settings/billing`, }); From d571c6d9a21879de566f583ae7358f89ccbc814c Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 27 Oct 2024 22:22:39 -0600 Subject: [PATCH 09/21] refactor(dokploy): remove docs & website --- CONTRIBUTING.md | 27 +- Dockerfile.docs | 35 - Dockerfile.website | 35 - apps/docs/.gitignore | 31 - apps/docs/.map.ts | 4 - apps/docs/README.md | 15 - apps/docs/api.json | 11721 -------- apps/docs/app/[lang]/[[...slug]]/page.tsx | 104 - apps/docs/app/[lang]/layout.tsx | 133 - apps/docs/app/api/search/route.ts | 18 - apps/docs/app/global.css | 27 - apps/docs/app/icon.svg | 5 - apps/docs/app/layout.config.tsx | 76 - apps/docs/app/robots.ts | 11 - apps/docs/app/sitemap.ts | 18 - apps/docs/app/source.ts | 10 - apps/docs/components/analytics/google.tsx | 17 - apps/docs/components/analytics/index.ts | 30 - apps/docs/content/docs/api/index.cn.mdx | 99 - apps/docs/content/docs/api/index.mdx | 99 - apps/docs/content/docs/api/meta.cn.json | 33 - apps/docs/content/docs/api/meta.json | 38 - .../api/reference-api/reference-admin.mdx | 565 - .../reference-api/reference-application.mdx | 2970 -- .../docs/api/reference-api/reference-auth.mdx | 1487 - .../api/reference-api/reference-backup.mdx | 887 - .../api/reference-api/reference-bitbucket.mdx | 779 - .../reference-api/reference-certificates.mdx | 433 - .../api/reference-api/reference-cluster.mdx | 383 - .../api/reference-api/reference-compose.mdx | 1911 -- .../reference-api/reference-deployment.mdx | 208 - .../reference-api/reference-destination.mdx | 684 - .../api/reference-api/reference-docker.mdx | 402 - .../api/reference-api/reference-domain.mdx | 804 - .../reference-api/reference-gitProvider.mdx | 203 - .../api/reference-api/reference-github.mdx | 661 - .../api/reference-api/reference-gitlab.mdx | 816 - .../api/reference-api/reference-mariadb.mdx | 1285 - .../api/reference-api/reference-mongo.mdx | 1261 - .../api/reference-api/reference-mounts.mdx | 532 - .../api/reference-api/reference-mysql.mdx | 1285 - .../reference-api/reference-notification.mdx | 1957 -- .../docs/api/reference-api/reference-port.mdx | 453 - .../api/reference-api/reference-postgres.mdx | 1269 - .../api/reference-api/reference-project.mdx | 523 - .../api/reference-api/reference-redirects.mdx | 451 - .../api/reference-api/reference-redis.mdx | 1247 - .../api/reference-api/reference-registry.mdx | 838 - .../api/reference-api/reference-security.mdx | 441 - .../api/reference-api/reference-settings.mdx | 2949 -- .../api/reference-api/reference-sshKey.mdx | 634 - .../docs/api/reference-api/reference-user.mdx | 299 - .../docs/cli/commands/application.cn.mdx | 18 - .../content/docs/cli/commands/application.mdx | 20 - .../docs/cli/commands/authentication.cn.mdx | 25 - .../docs/cli/commands/authentication.mdx | 29 - .../docs/cli/commands/databases.cn.mdx | 43 - .../content/docs/cli/commands/databases.mdx | 45 - .../content/docs/cli/commands/project.cn.mdx | 16 - .../content/docs/cli/commands/project.mdx | 18 - apps/docs/content/docs/cli/index.cn.mdx | 23 - apps/docs/content/docs/cli/index.mdx | 23 - apps/docs/content/docs/cli/meta.cn.json | 13 - apps/docs/content/docs/cli/meta.json | 13 - .../docs/core/application/advanced.cn.mdx | 166 - .../docs/core/application/advanced.mdx | 173 - .../docs/core/application/auto-deploy.cn.mdx | 85 - .../docs/core/application/auto-deploy.mdx | 86 - .../docs/core/application/build-type.cn.mdx | 32 - .../docs/core/application/build-type.mdx | 34 - .../docs/core/application/domains.cn.mdx | 46 - .../content/docs/core/application/domains.mdx | 48 - .../docs/core/application/overview.cn.mdx | 41 - .../docs/core/application/overview.mdx | 58 - .../docs/core/application/providers.cn.mdx | 42 - .../docs/core/application/providers.mdx | 68 - .../content/docs/core/cluster/overview.cn.mdx | 88 - .../content/docs/core/cluster/overview.mdx | 98 - .../docs/core/databases/backups.cn.mdx | 26 - .../content/docs/core/databases/backups.mdx | 26 - .../docs/core/databases/connection.cn.mdx | 32 - .../docs/core/databases/connection.mdx | 33 - .../docs/core/databases/overview.cn.mdx | 25 - .../content/docs/core/databases/overview.mdx | 51 - .../docs/core/deployments/oracle-cloud.cn.mdx | 32 - .../docs/core/deployments/oracle-cloud.mdx | 31 - .../core/docker-compose/auto-deploy.cn.mdx | 81 - .../docs/core/docker-compose/auto-deploy.mdx | 84 - .../docs/core/docker-compose/domains.cn.mdx | 192 - .../docs/core/docker-compose/domains.mdx | 181 - .../docs/core/docker-compose/example.cn.mdx | 107 - .../docs/core/docker-compose/example.mdx | 110 - .../docs/core/docker-compose/overview.cn.mdx | 76 - .../docs/core/docker-compose/overview.mdx | 76 - .../docs/core/docker-compose/providers.cn.mdx | 40 - .../docs/core/docker-compose/providers.mdx | 66 - .../content/docs/core/docker/overview.cn.mdx | 23 - .../content/docs/core/docker/overview.mdx | 23 - .../docs/core/domain/application-setup.cn.mdx | 38 - .../docs/core/domain/application-setup.mdx | 29 - .../docs/core/domain/certificates.cn.mdx | 59 - .../content/docs/core/domain/certificates.mdx | 59 - .../core/domain/docker-compose-setup.cn.mdx | 73 - .../docs/core/domain/docker-compose-setup.mdx | 84 - .../docs/core/domain/requirements.cn.mdx | 22 - .../content/docs/core/domain/requirements.mdx | 24 - .../docs/core/domain/web-domain-setup.cn.mdx | 47 - .../docs/core/domain/web-domain-setup.mdx | 34 - .../docs/core/examples/astro-ssr.cn.mdx | 29 - .../content/docs/core/examples/astro-ssr.mdx | 29 - .../content/docs/core/examples/astro.cn.mdx | 27 - .../docs/content/docs/core/examples/astro.mdx | 27 - .../content/docs/core/examples/lit.cn.mdx | 29 - apps/docs/content/docs/core/examples/lit.mdx | 29 - .../content/docs/core/examples/nestjs.cn.mdx | 22 - .../content/docs/core/examples/nestjs.mdx | 21 - .../content/docs/core/examples/nextjs.cn.mdx | 22 - .../content/docs/core/examples/nextjs.mdx | 23 - .../content/docs/core/examples/preact.cn.mdx | 28 - .../content/docs/core/examples/preact.mdx | 29 - .../content/docs/core/examples/qwik.cn.mdx | 28 - apps/docs/content/docs/core/examples/qwik.mdx | 29 - .../content/docs/core/examples/remix.cn.mdx | 22 - .../docs/content/docs/core/examples/remix.mdx | 23 - .../content/docs/core/examples/solidjs.cn.mdx | 28 - .../content/docs/core/examples/solidjs.mdx | 29 - .../content/docs/core/examples/svelte.cn.mdx | 28 - .../content/docs/core/examples/svelte.mdx | 29 - .../docs/core/examples/vite-react.cn.mdx | 28 - .../content/docs/core/examples/vite-react.mdx | 29 - .../content/docs/core/examples/vuejs.cn.mdx | 28 - .../docs/content/docs/core/examples/vuejs.mdx | 28 - .../content/docs/core/extra/api-reference.mdx | 22668 ---------------- .../content/docs/core/extra/comparison.cn.mdx | 21 - .../content/docs/core/extra/comparison.mdx | 23 - .../docs/core/get-started/architecture.cn.mdx | 28 - .../docs/core/get-started/architecture.mdx | 29 - .../docs/core/get-started/features.cn.mdx | 100 - .../docs/core/get-started/features.mdx | 102 - .../docs/core/get-started/installation.cn.mdx | 72 - .../docs/core/get-started/installation.mdx | 80 - .../docs/core/get-started/introduction.cn.mdx | 54 - .../docs/core/get-started/introduction.mdx | 54 - .../get-started/manual-installation.cn.mdx | 166 - .../core/get-started/manual-installation.mdx | 165 - .../core/get-started/reset-password.cn.mdx | 13 - .../docs/core/get-started/reset-password.mdx | 41 - .../docs/core/get-started/uninstall.cn.mdx | 32 - .../docs/core/get-started/uninstall.mdx | 39 - apps/docs/content/docs/core/meta.cn.json | 76 - apps/docs/content/docs/core/meta.json | 79 - .../docs/core/monitoring/overview.cn.mdx | 24 - .../content/docs/core/monitoring/overview.mdx | 28 - .../docs/core/multi-server/example.mdx | 117 - .../docs/core/multi-server/overview.mdx | 29 - .../docs/core/server/appearance.cn.mdx | 12 - .../content/docs/core/server/appearance.mdx | 13 - .../docs/core/server/certificates.cn.mdx | 24 - .../content/docs/core/server/certificates.mdx | 25 - .../content/docs/core/server/cluster.cn.mdx | 86 - .../docs/content/docs/core/server/cluster.mdx | 86 - .../content/docs/core/server/overview.cn.mdx | 108 - .../content/docs/core/server/overview.mdx | 70 - .../content/docs/core/server/profile.cn.mdx | 24 - .../docs/content/docs/core/server/profile.mdx | 24 - .../docs/core/server/s3-destination.cn.mdx | 29 - .../docs/core/server/s3-destination.mdx | 32 - .../content/docs/core/server/users.cn.mdx | 25 - apps/docs/content/docs/core/server/users.mdx | 25 - .../docs/core/templates/overview.cn.mdx | 39 - .../content/docs/core/templates/overview.mdx | 44 - .../content/docs/core/traefik/overview.cn.mdx | 27 - .../content/docs/core/traefik/overview.mdx | 27 - .../docs/core/troubleshooting/overview.cn.mdx | 6 - .../docs/core/troubleshooting/overview.mdx | 92 - apps/docs/generate-docs.mjs | 17 - apps/docs/i18n.ts | 2 - apps/docs/mdx-components.tsx | 19 - apps/docs/middleware.ts | 14 - apps/docs/next.config.mjs | 16 - apps/docs/package.json | 31 - apps/docs/postcss.config.js | 6 - apps/docs/public/android-chrome-192x192.png | Bin 16133 -> 0 bytes apps/docs/public/android-chrome-512x512.png | Bin 55906 -> 0 bytes apps/docs/public/apple-touch-icon.png | Bin 14448 -> 0 bytes apps/docs/public/assets/add-node.png | Bin 123273 -> 0 bytes apps/docs/public/assets/architecture.png | Bin 55882 -> 0 bytes apps/docs/public/assets/cli/token.png | Bin 153099 -> 0 bytes apps/docs/public/assets/diagram.png | Bin 165238 -> 0 bytes .../public/assets/dokploy-ssh-compose.png | Bin 179998 -> 0 bytes apps/docs/public/assets/dokploy-ssh-key.png | Bin 182875 -> 0 bytes apps/docs/public/assets/favicon.png | Bin 24940 -> 0 bytes .../assets/file-mount-configuration.webp | Bin 20498 -> 0 bytes apps/docs/public/assets/file-mount.png | Bin 61075 -> 0 bytes .../public/assets/hostinger-add-sshkey.png | Bin 133141 -> 0 bytes apps/docs/public/assets/houston.webp | Bin 98506 -> 0 bytes .../app-setup-domain.png | Bin 50445 -> 0 bytes .../application-domain-setup/domain-setup.png | Bin 151143 -> 0 bytes .../public/assets/images/checks-passed.png | Bin 160724 -> 0 bytes .../assets/images/cluster/application.png | Bin 101657 -> 0 bytes .../public/assets/images/cluster/cluster.png | Bin 118464 -> 0 bytes .../public/assets/images/cluster/nodes.png | Bin 137656 -> 0 bytes .../public/assets/images/cluster/registry.png | Bin 125053 -> 0 bytes .../assets/images/cluster/swarm-settings.png | Bin 169371 -> 0 bytes .../assets/images/compose/application.png | Bin 133697 -> 0 bytes .../public/assets/images/compose/domain.png | Bin 88877 -> 0 bytes .../public/assets/images/compose/overview.png | Bin 153002 -> 0 bytes .../public/assets/images/compose/setup.png | Bin 106849 -> 0 bytes .../images/deployment/oracle/oracle-shape.png | Bin 257842 -> 0 bytes apps/docs/public/assets/images/hero-dark.svg | 161 - apps/docs/public/assets/images/hero-light.svg | 155 - apps/docs/public/assets/images/setup.png | Bin 103260 -> 0 bytes .../images/web-domain-setup/dokploy-setup.png | Bin 123828 -> 0 bytes .../images/web-domain-setup/domain-setup.png | Bin 151143 -> 0 bytes .../public/assets/multi-server-add-app.png | Bin 77609 -> 0 bytes .../public/assets/multi-server-add-server.png | Bin 88966 -> 0 bytes .../public/assets/multi-server-finish.png | Bin 262859 -> 0 bytes .../public/assets/multi-server-overview.png | Bin 86785 -> 0 bytes .../public/assets/multi-server-setup-2.png | Bin 241546 -> 0 bytes .../public/assets/multi-server-setup-3.png | Bin 197623 -> 0 bytes .../public/assets/multi-server-setup-app.png | Bin 109677 -> 0 bytes .../docs/public/assets/multi-server-setup.png | Bin 115362 -> 0 bytes apps/docs/public/assets/nodes.png | Bin 109347 -> 0 bytes .../docs/public/assets/private-repository.png | Bin 150211 -> 0 bytes apps/docs/public/assets/ssh-keys.png | Bin 130072 -> 0 bytes apps/docs/public/assets/webhook-github.png | Bin 182644 -> 0 bytes .../public/assets/webhook-url-compose.png | Bin 104082 -> 0 bytes apps/docs/public/assets/webhook-url.png | Bin 101298 -> 0 bytes apps/docs/public/favicon-16x16.png | Bin 730 -> 0 bytes apps/docs/public/favicon-32x32.png | Bin 1889 -> 0 bytes apps/docs/public/favicon.ico | Bin 15406 -> 0 bytes apps/docs/public/logo.png | Bin 5407 -> 0 bytes apps/docs/tailwind.config.js | 31 - apps/docs/tsconfig.json | 29 - apps/docs/utils/metadata.ts | 6 - apps/website/.gitignore | 37 - apps/website/README.md | 15 - apps/website/app/[locale]/[...rest]/page.tsx | 5 - apps/website/app/[locale]/layout.tsx | 106 - apps/website/app/[locale]/not-found.tsx | 5 - apps/website/app/[locale]/page.tsx | 20 - apps/website/app/[locale]/pricing/page.tsx | 9 - apps/website/app/[locale]/privacy/page.tsx | 111 - apps/website/app/[locale]/terms/page.tsx | 205 - apps/website/app/icon.svg | 5 - apps/website/app/layout.tsx | 11 - apps/website/app/not-found.tsx | 13 - apps/website/app/robots.ts | 11 - apps/website/app/sitemap.ts | 12 - apps/website/components.json | 17 - apps/website/components/CallToAction.tsx | 56 - apps/website/components/Container.tsx | 13 - apps/website/components/Faqs.tsx | 94 - apps/website/components/Footer.tsx | 122 - apps/website/components/Header.tsx | 186 - apps/website/components/Hero.tsx | 398 - apps/website/components/NavLink.tsx | 33 - apps/website/components/PrimaryFeatures.tsx | 194 - apps/website/components/SecondaryFeatures.tsx | 404 - apps/website/components/SlimLayout.tsx | 23 - apps/website/components/Testimonials.tsx | 134 - apps/website/components/analitycs/google.tsx | 17 - apps/website/components/analitycs/index.ts | 30 - apps/website/components/pricing.tsx | 505 - apps/website/components/shared/Logo.tsx | 25 - .../components/ui/animated-shiny-text.tsx | 40 - apps/website/components/ui/badge.tsx | 36 - apps/website/components/ui/button.tsx | 59 - .../components/ui/hover-border-gradient.tsx | 100 - apps/website/components/ui/input.tsx | 69 - apps/website/components/ui/select.tsx | 160 - apps/website/components/ui/switch.tsx | 29 - apps/website/components/ui/tabs.tsx | 53 - apps/website/i18n/request.tsx | 12 - apps/website/i18n/routing.ts | 16 - apps/website/lib/utils.ts | 8 - apps/website/locales/en.json | 176 - apps/website/locales/zh-Hans.json | 176 - apps/website/middleware.ts | 9 - apps/website/next.config.js | 15 - apps/website/package.json | 46 - apps/website/pnpm-lock.yaml | 3168 --- apps/website/postcss.config.js | 6 - apps/website/prettier.config.js | 8 - apps/website/public/banner.webp | Bin 38446 -> 0 bytes apps/website/public/canary.sh | 139 - apps/website/public/feature.sh | 139 - apps/website/public/install.sh | 136 - apps/website/public/og.png | Bin 453494 -> 0 bytes apps/website/public/primary/applications.png | Bin 81184 -> 0 bytes apps/website/public/primary/backups.png | Bin 96090 -> 0 bytes apps/website/public/primary/compose.png | Bin 152366 -> 0 bytes apps/website/public/primary/monitoring.png | Bin 141093 -> 0 bytes apps/website/public/primary/multinode.png | Bin 119837 -> 0 bytes apps/website/public/primary/projects.png | Bin 115931 -> 0 bytes apps/website/public/secondary/templates.png | Bin 121247 -> 0 bytes apps/website/public/secondary/terminal.png | Bin 122953 -> 0 bytes apps/website/public/secondary/traefik.png | Bin 108849 -> 0 bytes apps/website/public/secondary/users.png | Bin 111333 -> 0 bytes apps/website/styles/tailwind.css | 52 - apps/website/tailwind.config.ts | 117 - apps/website/tsconfig.json | 28 - pnpm-lock.yaml | 4644 ---- pnpm-workspace.yaml | 2 - 304 files changed, 2 insertions(+), 82584 deletions(-) delete mode 100644 Dockerfile.docs delete mode 100644 Dockerfile.website delete mode 100644 apps/docs/.gitignore delete mode 100644 apps/docs/.map.ts delete mode 100644 apps/docs/README.md delete mode 100644 apps/docs/api.json delete mode 100644 apps/docs/app/[lang]/[[...slug]]/page.tsx delete mode 100644 apps/docs/app/[lang]/layout.tsx delete mode 100644 apps/docs/app/api/search/route.ts delete mode 100644 apps/docs/app/global.css delete mode 100644 apps/docs/app/icon.svg delete mode 100644 apps/docs/app/layout.config.tsx delete mode 100644 apps/docs/app/robots.ts delete mode 100644 apps/docs/app/sitemap.ts delete mode 100644 apps/docs/app/source.ts delete mode 100644 apps/docs/components/analytics/google.tsx delete mode 100644 apps/docs/components/analytics/index.ts delete mode 100644 apps/docs/content/docs/api/index.cn.mdx delete mode 100644 apps/docs/content/docs/api/index.mdx delete mode 100644 apps/docs/content/docs/api/meta.cn.json delete mode 100644 apps/docs/content/docs/api/meta.json delete mode 100644 apps/docs/content/docs/api/reference-api/reference-admin.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-application.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-auth.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-backup.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-bitbucket.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-certificates.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-cluster.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-compose.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-deployment.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-destination.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-docker.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-domain.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-gitProvider.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-github.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-gitlab.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-mariadb.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-mongo.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-mounts.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-mysql.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-notification.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-port.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-postgres.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-project.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-redirects.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-redis.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-registry.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-security.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-settings.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-sshKey.mdx delete mode 100644 apps/docs/content/docs/api/reference-api/reference-user.mdx delete mode 100644 apps/docs/content/docs/cli/commands/application.cn.mdx delete mode 100644 apps/docs/content/docs/cli/commands/application.mdx delete mode 100644 apps/docs/content/docs/cli/commands/authentication.cn.mdx delete mode 100644 apps/docs/content/docs/cli/commands/authentication.mdx delete mode 100644 apps/docs/content/docs/cli/commands/databases.cn.mdx delete mode 100644 apps/docs/content/docs/cli/commands/databases.mdx delete mode 100644 apps/docs/content/docs/cli/commands/project.cn.mdx delete mode 100644 apps/docs/content/docs/cli/commands/project.mdx delete mode 100644 apps/docs/content/docs/cli/index.cn.mdx delete mode 100644 apps/docs/content/docs/cli/index.mdx delete mode 100644 apps/docs/content/docs/cli/meta.cn.json delete mode 100644 apps/docs/content/docs/cli/meta.json delete mode 100644 apps/docs/content/docs/core/application/advanced.cn.mdx delete mode 100644 apps/docs/content/docs/core/application/advanced.mdx delete mode 100644 apps/docs/content/docs/core/application/auto-deploy.cn.mdx delete mode 100644 apps/docs/content/docs/core/application/auto-deploy.mdx delete mode 100644 apps/docs/content/docs/core/application/build-type.cn.mdx delete mode 100644 apps/docs/content/docs/core/application/build-type.mdx delete mode 100644 apps/docs/content/docs/core/application/domains.cn.mdx delete mode 100644 apps/docs/content/docs/core/application/domains.mdx delete mode 100644 apps/docs/content/docs/core/application/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/application/overview.mdx delete mode 100644 apps/docs/content/docs/core/application/providers.cn.mdx delete mode 100644 apps/docs/content/docs/core/application/providers.mdx delete mode 100644 apps/docs/content/docs/core/cluster/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/cluster/overview.mdx delete mode 100644 apps/docs/content/docs/core/databases/backups.cn.mdx delete mode 100644 apps/docs/content/docs/core/databases/backups.mdx delete mode 100644 apps/docs/content/docs/core/databases/connection.cn.mdx delete mode 100644 apps/docs/content/docs/core/databases/connection.mdx delete mode 100644 apps/docs/content/docs/core/databases/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/databases/overview.mdx delete mode 100644 apps/docs/content/docs/core/deployments/oracle-cloud.cn.mdx delete mode 100644 apps/docs/content/docs/core/deployments/oracle-cloud.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/auto-deploy.cn.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/auto-deploy.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/domains.cn.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/domains.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/example.cn.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/example.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/overview.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/providers.cn.mdx delete mode 100644 apps/docs/content/docs/core/docker-compose/providers.mdx delete mode 100644 apps/docs/content/docs/core/docker/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/docker/overview.mdx delete mode 100644 apps/docs/content/docs/core/domain/application-setup.cn.mdx delete mode 100644 apps/docs/content/docs/core/domain/application-setup.mdx delete mode 100644 apps/docs/content/docs/core/domain/certificates.cn.mdx delete mode 100644 apps/docs/content/docs/core/domain/certificates.mdx delete mode 100644 apps/docs/content/docs/core/domain/docker-compose-setup.cn.mdx delete mode 100644 apps/docs/content/docs/core/domain/docker-compose-setup.mdx delete mode 100644 apps/docs/content/docs/core/domain/requirements.cn.mdx delete mode 100644 apps/docs/content/docs/core/domain/requirements.mdx delete mode 100644 apps/docs/content/docs/core/domain/web-domain-setup.cn.mdx delete mode 100644 apps/docs/content/docs/core/domain/web-domain-setup.mdx delete mode 100644 apps/docs/content/docs/core/examples/astro-ssr.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/astro-ssr.mdx delete mode 100644 apps/docs/content/docs/core/examples/astro.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/astro.mdx delete mode 100644 apps/docs/content/docs/core/examples/lit.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/lit.mdx delete mode 100644 apps/docs/content/docs/core/examples/nestjs.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/nestjs.mdx delete mode 100644 apps/docs/content/docs/core/examples/nextjs.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/nextjs.mdx delete mode 100644 apps/docs/content/docs/core/examples/preact.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/preact.mdx delete mode 100644 apps/docs/content/docs/core/examples/qwik.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/qwik.mdx delete mode 100644 apps/docs/content/docs/core/examples/remix.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/remix.mdx delete mode 100644 apps/docs/content/docs/core/examples/solidjs.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/solidjs.mdx delete mode 100644 apps/docs/content/docs/core/examples/svelte.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/svelte.mdx delete mode 100644 apps/docs/content/docs/core/examples/vite-react.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/vite-react.mdx delete mode 100644 apps/docs/content/docs/core/examples/vuejs.cn.mdx delete mode 100644 apps/docs/content/docs/core/examples/vuejs.mdx delete mode 100644 apps/docs/content/docs/core/extra/api-reference.mdx delete mode 100644 apps/docs/content/docs/core/extra/comparison.cn.mdx delete mode 100644 apps/docs/content/docs/core/extra/comparison.mdx delete mode 100644 apps/docs/content/docs/core/get-started/architecture.cn.mdx delete mode 100644 apps/docs/content/docs/core/get-started/architecture.mdx delete mode 100644 apps/docs/content/docs/core/get-started/features.cn.mdx delete mode 100644 apps/docs/content/docs/core/get-started/features.mdx delete mode 100644 apps/docs/content/docs/core/get-started/installation.cn.mdx delete mode 100644 apps/docs/content/docs/core/get-started/installation.mdx delete mode 100644 apps/docs/content/docs/core/get-started/introduction.cn.mdx delete mode 100644 apps/docs/content/docs/core/get-started/introduction.mdx delete mode 100644 apps/docs/content/docs/core/get-started/manual-installation.cn.mdx delete mode 100644 apps/docs/content/docs/core/get-started/manual-installation.mdx delete mode 100644 apps/docs/content/docs/core/get-started/reset-password.cn.mdx delete mode 100644 apps/docs/content/docs/core/get-started/reset-password.mdx delete mode 100644 apps/docs/content/docs/core/get-started/uninstall.cn.mdx delete mode 100644 apps/docs/content/docs/core/get-started/uninstall.mdx delete mode 100644 apps/docs/content/docs/core/meta.cn.json delete mode 100644 apps/docs/content/docs/core/meta.json delete mode 100644 apps/docs/content/docs/core/monitoring/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/monitoring/overview.mdx delete mode 100644 apps/docs/content/docs/core/multi-server/example.mdx delete mode 100644 apps/docs/content/docs/core/multi-server/overview.mdx delete mode 100644 apps/docs/content/docs/core/server/appearance.cn.mdx delete mode 100644 apps/docs/content/docs/core/server/appearance.mdx delete mode 100644 apps/docs/content/docs/core/server/certificates.cn.mdx delete mode 100644 apps/docs/content/docs/core/server/certificates.mdx delete mode 100644 apps/docs/content/docs/core/server/cluster.cn.mdx delete mode 100644 apps/docs/content/docs/core/server/cluster.mdx delete mode 100644 apps/docs/content/docs/core/server/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/server/overview.mdx delete mode 100644 apps/docs/content/docs/core/server/profile.cn.mdx delete mode 100644 apps/docs/content/docs/core/server/profile.mdx delete mode 100644 apps/docs/content/docs/core/server/s3-destination.cn.mdx delete mode 100644 apps/docs/content/docs/core/server/s3-destination.mdx delete mode 100644 apps/docs/content/docs/core/server/users.cn.mdx delete mode 100644 apps/docs/content/docs/core/server/users.mdx delete mode 100644 apps/docs/content/docs/core/templates/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/templates/overview.mdx delete mode 100644 apps/docs/content/docs/core/traefik/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/traefik/overview.mdx delete mode 100644 apps/docs/content/docs/core/troubleshooting/overview.cn.mdx delete mode 100644 apps/docs/content/docs/core/troubleshooting/overview.mdx delete mode 100644 apps/docs/generate-docs.mjs delete mode 100644 apps/docs/i18n.ts delete mode 100644 apps/docs/mdx-components.tsx delete mode 100644 apps/docs/middleware.ts delete mode 100644 apps/docs/next.config.mjs delete mode 100644 apps/docs/package.json delete mode 100644 apps/docs/postcss.config.js delete mode 100644 apps/docs/public/android-chrome-192x192.png delete mode 100644 apps/docs/public/android-chrome-512x512.png delete mode 100644 apps/docs/public/apple-touch-icon.png delete mode 100644 apps/docs/public/assets/add-node.png delete mode 100644 apps/docs/public/assets/architecture.png delete mode 100644 apps/docs/public/assets/cli/token.png delete mode 100644 apps/docs/public/assets/diagram.png delete mode 100644 apps/docs/public/assets/dokploy-ssh-compose.png delete mode 100644 apps/docs/public/assets/dokploy-ssh-key.png delete mode 100644 apps/docs/public/assets/favicon.png delete mode 100644 apps/docs/public/assets/file-mount-configuration.webp delete mode 100644 apps/docs/public/assets/file-mount.png delete mode 100644 apps/docs/public/assets/hostinger-add-sshkey.png delete mode 100644 apps/docs/public/assets/houston.webp delete mode 100644 apps/docs/public/assets/images/application-domain-setup/app-setup-domain.png delete mode 100644 apps/docs/public/assets/images/application-domain-setup/domain-setup.png delete mode 100644 apps/docs/public/assets/images/checks-passed.png delete mode 100644 apps/docs/public/assets/images/cluster/application.png delete mode 100644 apps/docs/public/assets/images/cluster/cluster.png delete mode 100644 apps/docs/public/assets/images/cluster/nodes.png delete mode 100644 apps/docs/public/assets/images/cluster/registry.png delete mode 100644 apps/docs/public/assets/images/cluster/swarm-settings.png delete mode 100644 apps/docs/public/assets/images/compose/application.png delete mode 100644 apps/docs/public/assets/images/compose/domain.png delete mode 100644 apps/docs/public/assets/images/compose/overview.png delete mode 100644 apps/docs/public/assets/images/compose/setup.png delete mode 100644 apps/docs/public/assets/images/deployment/oracle/oracle-shape.png delete mode 100644 apps/docs/public/assets/images/hero-dark.svg delete mode 100644 apps/docs/public/assets/images/hero-light.svg delete mode 100644 apps/docs/public/assets/images/setup.png delete mode 100644 apps/docs/public/assets/images/web-domain-setup/dokploy-setup.png delete mode 100644 apps/docs/public/assets/images/web-domain-setup/domain-setup.png delete mode 100644 apps/docs/public/assets/multi-server-add-app.png delete mode 100644 apps/docs/public/assets/multi-server-add-server.png delete mode 100644 apps/docs/public/assets/multi-server-finish.png delete mode 100644 apps/docs/public/assets/multi-server-overview.png delete mode 100644 apps/docs/public/assets/multi-server-setup-2.png delete mode 100644 apps/docs/public/assets/multi-server-setup-3.png delete mode 100644 apps/docs/public/assets/multi-server-setup-app.png delete mode 100644 apps/docs/public/assets/multi-server-setup.png delete mode 100644 apps/docs/public/assets/nodes.png delete mode 100644 apps/docs/public/assets/private-repository.png delete mode 100644 apps/docs/public/assets/ssh-keys.png delete mode 100644 apps/docs/public/assets/webhook-github.png delete mode 100644 apps/docs/public/assets/webhook-url-compose.png delete mode 100644 apps/docs/public/assets/webhook-url.png delete mode 100644 apps/docs/public/favicon-16x16.png delete mode 100644 apps/docs/public/favicon-32x32.png delete mode 100644 apps/docs/public/favicon.ico delete mode 100644 apps/docs/public/logo.png delete mode 100644 apps/docs/tailwind.config.js delete mode 100644 apps/docs/tsconfig.json delete mode 100644 apps/docs/utils/metadata.ts delete mode 100644 apps/website/.gitignore delete mode 100644 apps/website/README.md delete mode 100644 apps/website/app/[locale]/[...rest]/page.tsx delete mode 100644 apps/website/app/[locale]/layout.tsx delete mode 100644 apps/website/app/[locale]/not-found.tsx delete mode 100644 apps/website/app/[locale]/page.tsx delete mode 100644 apps/website/app/[locale]/pricing/page.tsx delete mode 100644 apps/website/app/[locale]/privacy/page.tsx delete mode 100644 apps/website/app/[locale]/terms/page.tsx delete mode 100644 apps/website/app/icon.svg delete mode 100644 apps/website/app/layout.tsx delete mode 100644 apps/website/app/not-found.tsx delete mode 100644 apps/website/app/robots.ts delete mode 100644 apps/website/app/sitemap.ts delete mode 100644 apps/website/components.json delete mode 100644 apps/website/components/CallToAction.tsx delete mode 100644 apps/website/components/Container.tsx delete mode 100644 apps/website/components/Faqs.tsx delete mode 100644 apps/website/components/Footer.tsx delete mode 100644 apps/website/components/Header.tsx delete mode 100644 apps/website/components/Hero.tsx delete mode 100644 apps/website/components/NavLink.tsx delete mode 100644 apps/website/components/PrimaryFeatures.tsx delete mode 100644 apps/website/components/SecondaryFeatures.tsx delete mode 100644 apps/website/components/SlimLayout.tsx delete mode 100644 apps/website/components/Testimonials.tsx delete mode 100644 apps/website/components/analitycs/google.tsx delete mode 100644 apps/website/components/analitycs/index.ts delete mode 100644 apps/website/components/pricing.tsx delete mode 100644 apps/website/components/shared/Logo.tsx delete mode 100644 apps/website/components/ui/animated-shiny-text.tsx delete mode 100644 apps/website/components/ui/badge.tsx delete mode 100644 apps/website/components/ui/button.tsx delete mode 100644 apps/website/components/ui/hover-border-gradient.tsx delete mode 100644 apps/website/components/ui/input.tsx delete mode 100644 apps/website/components/ui/select.tsx delete mode 100644 apps/website/components/ui/switch.tsx delete mode 100644 apps/website/components/ui/tabs.tsx delete mode 100644 apps/website/i18n/request.tsx delete mode 100644 apps/website/i18n/routing.ts delete mode 100644 apps/website/lib/utils.ts delete mode 100644 apps/website/locales/en.json delete mode 100644 apps/website/locales/zh-Hans.json delete mode 100644 apps/website/middleware.ts delete mode 100644 apps/website/next.config.js delete mode 100644 apps/website/package.json delete mode 100644 apps/website/pnpm-lock.yaml delete mode 100644 apps/website/postcss.config.js delete mode 100644 apps/website/prettier.config.js delete mode 100644 apps/website/public/banner.webp delete mode 100644 apps/website/public/canary.sh delete mode 100644 apps/website/public/feature.sh delete mode 100644 apps/website/public/install.sh delete mode 100644 apps/website/public/og.png delete mode 100644 apps/website/public/primary/applications.png delete mode 100644 apps/website/public/primary/backups.png delete mode 100644 apps/website/public/primary/compose.png delete mode 100644 apps/website/public/primary/monitoring.png delete mode 100644 apps/website/public/primary/multinode.png delete mode 100644 apps/website/public/primary/projects.png delete mode 100644 apps/website/public/secondary/templates.png delete mode 100644 apps/website/public/secondary/terminal.png delete mode 100644 apps/website/public/secondary/traefik.png delete mode 100644 apps/website/public/secondary/users.png delete mode 100644 apps/website/styles/tailwind.css delete mode 100644 apps/website/tailwind.config.ts delete mode 100644 apps/website/tsconfig.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 53b8452c5..05256d571 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -242,30 +242,7 @@ export function generate(schema: Schema): Template { - If you want to show a domain in the UI, please add the prefix \_HOST at the end of the variable name. - Test first on a vps or a server to make sure the template works. -## Docs +## Docs & Website -To run the docs locally, run the following command: +To contribute to the Dokploy docs or website, please go to this [repository](https://github.com/Dokploy/website). -```bash -pnpm run docs:dev -``` - -To build the docs, run the following command: - -```bash -pnpm run docs:build -``` - -## Website - -To run the website locally, run the following command: - -```bash -pnpm run website:dev -``` - -To build the website, run the following command: - -```bash -pnpm run website:build -``` diff --git a/Dockerfile.docs b/Dockerfile.docs deleted file mode 100644 index 71b790ec3..000000000 --- a/Dockerfile.docs +++ /dev/null @@ -1,35 +0,0 @@ -FROM node:18-alpine AS base -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable - -FROM base AS build -COPY . /usr/src/app -WORKDIR /usr/src/app - - -# Install dependencies -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --filter=./apps/docs --frozen-lockfile - -# Deploy only the dokploy app - -ENV NODE_ENV=production -RUN pnpm --filter=./apps/docs run build -RUN pnpm --filter=./apps/docs --prod deploy /prod/docs - -RUN cp -R /usr/src/app/apps/docs/.next /prod/docs/.next - -FROM base AS dokploy -WORKDIR /app - -# Set production -ENV NODE_ENV=production - -# Copy only the necessary files -COPY --from=build /prod/docs/.next ./.next -COPY --from=build /prod/docs/public ./public -COPY --from=build /prod/docs/package.json ./package.json -COPY --from=build /prod/docs/node_modules ./node_modules - -EXPOSE 3000 -CMD HOSTNAME=0.0.0.0 && pnpm start \ No newline at end of file diff --git a/Dockerfile.website b/Dockerfile.website deleted file mode 100644 index 9932f5271..000000000 --- a/Dockerfile.website +++ /dev/null @@ -1,35 +0,0 @@ -FROM node:18-alpine AS base -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable - -FROM base AS build -COPY . /usr/src/app -WORKDIR /usr/src/app - - -# Install dependencies -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --filter=./apps/website --frozen-lockfile - -# Deploy only the dokploy app - -ENV NODE_ENV=production -RUN pnpm --filter=./apps/website run build -RUN pnpm --filter=./apps/website --prod deploy /prod/website - -RUN cp -R /usr/src/app/apps/website/.next /prod/website/.next - -FROM base AS dokploy -WORKDIR /app - -# Set production -ENV NODE_ENV=production - -# Copy only the necessary files -COPY --from=build /prod/website/.next ./.next -COPY --from=build /prod/website/public ./public -COPY --from=build /prod/website/package.json ./package.json -COPY --from=build /prod/website/node_modules ./node_modules - -EXPOSE 3000 -CMD HOSTNAME=0.0.0.0 && pnpm start \ No newline at end of file diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore deleted file mode 100644 index 0d5488121..000000000 --- a/apps/docs/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -# deps -/node_modules - -# generated content -.contentlayer - -# test & build -/coverage -/.next/ -/out/ -/build -*.tsbuildinfo - -# bun -bun.lockb - -# misc -.DS_Store -*.pem -/.pnp -.pnp.js -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.idea/* -.idea - -# others -.env*.local -.vercel -next-env.d.ts diff --git a/apps/docs/.map.ts b/apps/docs/.map.ts deleted file mode 100644 index bc9204924..000000000 --- a/apps/docs/.map.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** Auto-generated **/ -declare const map: Record; - -export { map }; diff --git a/apps/docs/README.md b/apps/docs/README.md deleted file mode 100644 index e3ee85e3b..000000000 --- a/apps/docs/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Docs - -Dokploy Documentation - -Run development server: - -```bash -npm run dev -# or -pnpm dev -# or -yarn dev -``` - -Open http://localhost:3000 with your browser to see the result. diff --git a/apps/docs/api.json b/apps/docs/api.json deleted file mode 100644 index 074538029..000000000 --- a/apps/docs/api.json +++ /dev/null @@ -1,11721 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "Dokploy API", - "description": "Endpoints for dokploy", - "version": "v0.7.3" - }, - "servers": [ - { - "url": "http://localhost:3000/api" - } - ], - "paths": { - "/admin.one": { - "get": { - "operationId": "admin-one", - "tags": ["admin"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/admin.createUserInvitation": { - "post": { - "operationId": "admin-createUserInvitation", - "tags": ["admin"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email" - } - }, - "required": ["email"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/admin.removeUser": { - "post": { - "operationId": "admin-removeUser", - "tags": ["admin"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "authId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["authId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/admin.getUserByToken": { - "get": { - "operationId": "admin-getUserByToken", - "tags": ["admin"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "token", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/admin.assignPermissions": { - "post": { - "operationId": "admin-assignPermissions", - "tags": ["admin"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "userId": { - "type": "string", - "minLength": 1 - }, - "canCreateProjects": { - "type": "boolean" - }, - "canCreateServices": { - "type": "boolean" - }, - "canDeleteProjects": { - "type": "boolean" - }, - "canDeleteServices": { - "type": "boolean" - }, - "accesedProjects": { - "type": "array", - "items": { - "type": "string" - } - }, - "accesedServices": { - "type": "array", - "items": { - "type": "string" - } - }, - "canAccessToTraefikFiles": { - "type": "boolean" - }, - "canAccessToDocker": { - "type": "boolean" - }, - "canAccessToAPI": { - "type": "boolean" - }, - "canAccessToSSHKeys": { - "type": "boolean" - }, - "canAccessToGitProviders": { - "type": "boolean" - } - }, - "required": [ - "userId", - "canCreateProjects", - "canCreateServices", - "canDeleteProjects", - "canDeleteServices", - "accesedProjects", - "accesedServices", - "canAccessToTraefikFiles", - "canAccessToDocker", - "canAccessToAPI", - "canAccessToSSHKeys", - "canAccessToGitProviders" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/docker.getContainers": { - "get": { - "operationId": "docker-getContainers", - "tags": ["docker"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/docker.getConfig": { - "get": { - "operationId": "docker-getConfig", - "tags": ["docker"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "containerId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/docker.getContainersByAppNameMatch": { - "get": { - "operationId": "docker-getContainersByAppNameMatch", - "tags": ["docker"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "appType", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string", - "enum": ["stack"] - }, - { - "type": "string", - "enum": ["docker-compose"] - } - ] - } - }, - { - "name": "appName", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/docker.getContainersByAppLabel": { - "get": { - "operationId": "docker-getContainersByAppLabel", - "tags": ["docker"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "appName", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.createAdmin": { - "post": { - "operationId": "auth-createAdmin", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email" - }, - "password": { - "type": "string", - "minLength": 8 - } - }, - "required": ["email", "password"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.createUser": { - "post": { - "operationId": "auth-createUser", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "password": { - "type": "string", - "minLength": 8 - }, - "id": { - "type": "string" - }, - "token": { - "type": "string", - "minLength": 1 - } - }, - "required": ["password", "id", "token"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.login": { - "post": { - "operationId": "auth-login", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email" - }, - "password": { - "type": "string", - "minLength": 8 - } - }, - "required": ["email", "password"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.get": { - "get": { - "operationId": "auth-get", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.logout": { - "post": { - "operationId": "auth-logout", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.update": { - "post": { - "operationId": "auth-update", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "email": { - "type": "string", - "nullable": true - }, - "password": { - "type": "string", - "nullable": true - }, - "rol": { - "type": "string", - "enum": ["admin", "user"] - }, - "image": { - "type": "string" - }, - "secret": { - "type": "string", - "nullable": true - }, - "token": { - "type": "string", - "nullable": true - }, - "is2FAEnabled": { - "type": "boolean" - }, - "createdAt": { - "type": "string" - } - }, - "required": ["email", "password"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.generateToken": { - "post": { - "operationId": "auth-generateToken", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.one": { - "get": { - "operationId": "auth-one", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "id", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.updateByAdmin": { - "post": { - "operationId": "auth-updateByAdmin", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "email": { - "type": "string", - "nullable": true - }, - "password": { - "type": "string", - "nullable": true - }, - "rol": { - "type": "string", - "enum": ["admin", "user"] - }, - "image": { - "type": "string" - }, - "secret": { - "type": "string", - "nullable": true - }, - "token": { - "type": "string", - "nullable": true - }, - "is2FAEnabled": { - "type": "boolean" - }, - "createdAt": { - "type": "string" - } - }, - "required": ["id", "email", "password"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.generate2FASecret": { - "get": { - "operationId": "auth-generate2FASecret", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.verify2FASetup": { - "post": { - "operationId": "auth-verify2FASetup", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pin": { - "type": "string", - "minLength": 6 - }, - "secret": { - "type": "string", - "minLength": 1 - } - }, - "required": ["pin", "secret"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.verifyLogin2FA": { - "post": { - "operationId": "auth-verifyLogin2FA", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "pin": { - "type": "string", - "minLength": 6 - }, - "id": { - "type": "string" - } - }, - "required": ["pin", "id"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.disable2FA": { - "post": { - "operationId": "auth-disable2FA", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/auth.verifyToken": { - "post": { - "operationId": "auth-verifyToken", - "tags": ["auth"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/project.create": { - "post": { - "operationId": "project-create", - "tags": ["project"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - } - }, - "required": ["name"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/project.one": { - "get": { - "operationId": "project-one", - "tags": ["project"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "projectId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/project.all": { - "get": { - "operationId": "project-all", - "tags": ["project"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/project.remove": { - "post": { - "operationId": "project-remove", - "tags": ["project"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["projectId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/project.update": { - "post": { - "operationId": "project-update", - "tags": ["project"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "projectId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["name", "projectId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.create": { - "post": { - "operationId": "application-create", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - }, - "projectId": { - "type": "string" - } - }, - "required": ["name", "projectId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.one": { - "get": { - "operationId": "application-one", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "applicationId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.reload": { - "post": { - "operationId": "application-reload", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appName": { - "type": "string" - }, - "applicationId": { - "type": "string" - } - }, - "required": ["appName", "applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.delete": { - "post": { - "operationId": "application-delete", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.stop": { - "post": { - "operationId": "application-stop", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.start": { - "post": { - "operationId": "application-start", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.redeploy": { - "post": { - "operationId": "application-redeploy", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.saveEnvironment": { - "post": { - "operationId": "application-saveEnvironment", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - }, - "env": { - "type": "string", - "nullable": true - }, - "buildArgs": { - "type": "string", - "nullable": true - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.saveBuildType": { - "post": { - "operationId": "application-saveBuildType", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - }, - "buildType": { - "type": "string", - "enum": [ - "dockerfile", - "heroku_buildpacks", - "paketo_buildpacks", - "nixpacks", - "static" - ] - }, - "dockerfile": { - "type": "string", - "nullable": true - }, - "dockerContextPath": { - "type": "string", - "nullable": true - }, - "publishDirectory": { - "type": "string", - "nullable": true - } - }, - "required": ["applicationId", "buildType", "dockerContextPath"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.saveGithubProvider": { - "post": { - "operationId": "application-saveGithubProvider", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - }, - "repository": { - "type": "string", - "nullable": true - }, - "branch": { - "type": "string", - "nullable": true - }, - "owner": { - "type": "string", - "nullable": true - }, - "buildPath": { - "type": "string", - "nullable": true - }, - "githubId": { - "type": "string", - "nullable": true - } - }, - "required": ["applicationId", "owner", "githubId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.saveGitlabProvider": { - "post": { - "operationId": "application-saveGitlabProvider", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - }, - "gitlabBranch": { - "type": "string", - "nullable": true - }, - "gitlabBuildPath": { - "type": "string", - "nullable": true - }, - "gitlabOwner": { - "type": "string", - "nullable": true - }, - "gitlabRepository": { - "type": "string", - "nullable": true - }, - "gitlabId": { - "type": "string", - "nullable": true - }, - "gitlabProjectId": { - "type": "number", - "nullable": true - }, - "gitlabPathNamespace": { - "type": "string", - "nullable": true - } - }, - "required": [ - "applicationId", - "gitlabBranch", - "gitlabBuildPath", - "gitlabOwner", - "gitlabRepository", - "gitlabId", - "gitlabProjectId", - "gitlabPathNamespace" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.saveBitbucketProvider": { - "post": { - "operationId": "application-saveBitbucketProvider", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "bitbucketBranch": { - "type": "string", - "nullable": true - }, - "bitbucketBuildPath": { - "type": "string", - "nullable": true - }, - "bitbucketOwner": { - "type": "string", - "nullable": true - }, - "bitbucketRepository": { - "type": "string", - "nullable": true - }, - "bitbucketId": { - "type": "string", - "nullable": true - }, - "applicationId": { - "type": "string" - } - }, - "required": [ - "bitbucketBranch", - "bitbucketBuildPath", - "bitbucketOwner", - "bitbucketRepository", - "bitbucketId", - "applicationId" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.saveDockerProvider": { - "post": { - "operationId": "application-saveDockerProvider", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "dockerImage": { - "type": "string", - "nullable": true - }, - "applicationId": { - "type": "string" - }, - "username": { - "type": "string", - "nullable": true - }, - "password": { - "type": "string", - "nullable": true - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.saveGitProdiver": { - "post": { - "operationId": "application-saveGitProdiver", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "customGitBranch": { - "type": "string", - "nullable": true - }, - "applicationId": { - "type": "string" - }, - "customGitBuildPath": { - "type": "string", - "nullable": true - }, - "customGitUrl": { - "type": "string", - "nullable": true - }, - "customGitSSHKeyId": { - "type": "string", - "nullable": true - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.markRunning": { - "post": { - "operationId": "application-markRunning", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.update": { - "post": { - "operationId": "application-update", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - }, - "env": { - "type": "string", - "nullable": true - }, - "buildArgs": { - "type": "string", - "nullable": true - }, - "memoryReservation": { - "type": "number", - "nullable": true - }, - "memoryLimit": { - "type": "number", - "nullable": true - }, - "cpuReservation": { - "type": "number", - "nullable": true - }, - "cpuLimit": { - "type": "number", - "nullable": true - }, - "title": { - "type": "string", - "nullable": true - }, - "enabled": { - "type": "boolean", - "nullable": true - }, - "subtitle": { - "type": "string", - "nullable": true - }, - "command": { - "type": "string", - "nullable": true - }, - "refreshToken": { - "type": "string", - "nullable": true - }, - "sourceType": { - "type": "string", - "enum": ["github", "docker", "git"] - }, - "repository": { - "type": "string", - "nullable": true - }, - "owner": { - "type": "string", - "nullable": true - }, - "branch": { - "type": "string", - "nullable": true - }, - "buildPath": { - "type": "string", - "nullable": true - }, - "autoDeploy": { - "type": "boolean", - "nullable": true - }, - "gitlabProjectId": { - "type": "number", - "nullable": true - }, - "gitlabRepository": { - "type": "string", - "nullable": true - }, - "gitlabOwner": { - "type": "string", - "nullable": true - }, - "gitlabBranch": { - "type": "string", - "nullable": true - }, - "gitlabBuildPath": { - "type": "string", - "nullable": true - }, - "gitlabPathNamespace": { - "type": "string", - "nullable": true - }, - "bitbucketRepository": { - "type": "string", - "nullable": true - }, - "bitbucketOwner": { - "type": "string", - "nullable": true - }, - "bitbucketBranch": { - "type": "string", - "nullable": true - }, - "bitbucketBuildPath": { - "type": "string", - "nullable": true - }, - "username": { - "type": "string", - "nullable": true - }, - "password": { - "type": "string", - "nullable": true - }, - "dockerImage": { - "type": "string", - "nullable": true - }, - "customGitUrl": { - "type": "string", - "nullable": true - }, - "customGitBranch": { - "type": "string", - "nullable": true - }, - "customGitBuildPath": { - "type": "string", - "nullable": true - }, - "customGitSSHKeyId": { - "type": "string", - "nullable": true - }, - "dockerfile": { - "type": "string", - "nullable": true - }, - "dockerContextPath": { - "type": "string", - "nullable": true - }, - "dropBuildPath": { - "type": "string", - "nullable": true - }, - "healthCheckSwarm": { - "type": "object", - "properties": { - "Test": { - "type": "array", - "items": { - "type": "string" - } - }, - "Interval": { - "type": "number" - }, - "Timeout": { - "type": "number" - }, - "StartPeriod": { - "type": "number" - }, - "Retries": { - "type": "number" - } - }, - "additionalProperties": false, - "nullable": true - }, - "restartPolicySwarm": { - "type": "object", - "properties": { - "Condition": { - "type": "string" - }, - "Delay": { - "type": "number" - }, - "MaxAttempts": { - "type": "number" - }, - "Window": { - "type": "number" - } - }, - "additionalProperties": false, - "nullable": true - }, - "placementSwarm": { - "type": "object", - "properties": { - "Constraints": { - "type": "array", - "items": { - "type": "string" - } - }, - "Preferences": { - "type": "array", - "items": { - "type": "object", - "properties": { - "Spread": { - "type": "object", - "properties": { - "SpreadDescriptor": { - "type": "string" - } - }, - "required": ["SpreadDescriptor"], - "additionalProperties": false - } - }, - "required": ["Spread"], - "additionalProperties": false - } - }, - "MaxReplicas": { - "type": "number" - }, - "Platforms": { - "type": "array", - "items": { - "type": "object", - "properties": { - "Architecture": { - "type": "string" - }, - "OS": { - "type": "string" - } - }, - "required": ["Architecture", "OS"], - "additionalProperties": false - } - } - }, - "additionalProperties": false, - "nullable": true - }, - "updateConfigSwarm": { - "type": "object", - "properties": { - "Parallelism": { - "type": "number" - }, - "Delay": { - "type": "number" - }, - "FailureAction": { - "type": "string" - }, - "Monitor": { - "type": "number" - }, - "MaxFailureRatio": { - "type": "number" - }, - "Order": { - "type": "string" - } - }, - "required": ["Parallelism", "Order"], - "additionalProperties": false, - "nullable": true - }, - "rollbackConfigSwarm": { - "type": "object", - "properties": { - "Parallelism": { - "type": "number" - }, - "Delay": { - "type": "number" - }, - "FailureAction": { - "type": "string" - }, - "Monitor": { - "type": "number" - }, - "MaxFailureRatio": { - "type": "number" - }, - "Order": { - "type": "string" - } - }, - "required": ["Parallelism", "Order"], - "additionalProperties": false, - "nullable": true - }, - "modeSwarm": { - "type": "object", - "properties": { - "Replicated": { - "type": "object", - "properties": { - "Replicas": { - "type": "number" - } - }, - "additionalProperties": false - }, - "Global": { - "type": "object", - "properties": {}, - "additionalProperties": false - }, - "ReplicatedJob": { - "type": "object", - "properties": { - "MaxConcurrent": { - "type": "number" - }, - "TotalCompletions": { - "type": "number" - } - }, - "additionalProperties": false - }, - "GlobalJob": { - "type": "object", - "properties": {}, - "additionalProperties": false - } - }, - "additionalProperties": false, - "nullable": true - }, - "labelsSwarm": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "nullable": true - }, - "networkSwarm": { - "type": "array", - "items": { - "type": "object", - "properties": { - "Target": { - "type": "string" - }, - "Aliases": { - "type": "array", - "items": { - "type": "string" - } - }, - "DriverOpts": { - "type": "object", - "properties": {}, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "nullable": true - }, - "replicas": { - "type": "number" - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - }, - "buildType": { - "type": "string", - "enum": [ - "dockerfile", - "heroku_buildpacks", - "paketo_buildpacks", - "nixpacks", - "static" - ] - }, - "publishDirectory": { - "type": "string", - "nullable": true - }, - "createdAt": { - "type": "string" - }, - "registryId": { - "type": "string", - "nullable": true - }, - "projectId": { - "type": "string" - }, - "githubId": { - "type": "string", - "nullable": true - }, - "gitlabId": { - "type": "string", - "nullable": true - }, - "bitbucketId": { - "type": "string", - "nullable": true - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.refreshToken": { - "post": { - "operationId": "application-refreshToken", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.deploy": { - "post": { - "operationId": "application-deploy", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.cleanQueues": { - "post": { - "operationId": "application-cleanQueues", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - } - }, - "required": ["applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.readTraefikConfig": { - "get": { - "operationId": "application-readTraefikConfig", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "applicationId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.updateTraefikConfig": { - "post": { - "operationId": "application-updateTraefikConfig", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - }, - "traefikConfig": { - "type": "string" - } - }, - "required": ["applicationId", "traefikConfig"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/application.readAppMonitoring": { - "get": { - "operationId": "application-readAppMonitoring", - "tags": ["application"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "appName", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.create": { - "post": { - "operationId": "mysql-create", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "dockerImage": { - "type": "string", - "default": "mysql:8" - }, - "projectId": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - }, - "databaseName": { - "type": "string", - "minLength": 1 - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - }, - "databaseRootPassword": { - "type": "string" - } - }, - "required": [ - "name", - "appName", - "projectId", - "databaseName", - "databaseUser", - "databasePassword", - "databaseRootPassword" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.one": { - "get": { - "operationId": "mysql-one", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "mysqlId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.start": { - "post": { - "operationId": "mysql-start", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - } - }, - "required": ["mysqlId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.stop": { - "post": { - "operationId": "mysql-stop", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - } - }, - "required": ["mysqlId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.saveExternalPort": { - "post": { - "operationId": "mysql-saveExternalPort", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - }, - "externalPort": { - "type": "number", - "nullable": true - } - }, - "required": ["mysqlId", "externalPort"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.deploy": { - "post": { - "operationId": "mysql-deploy", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - } - }, - "required": ["mysqlId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.changeStatus": { - "post": { - "operationId": "mysql-changeStatus", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - } - }, - "required": ["mysqlId", "applicationStatus"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.reload": { - "post": { - "operationId": "mysql-reload", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - }, - "appName": { - "type": "string", - "minLength": 1 - } - }, - "required": ["mysqlId", "appName"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.remove": { - "post": { - "operationId": "mysql-remove", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - } - }, - "required": ["mysqlId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.saveEnvironment": { - "post": { - "operationId": "mysql-saveEnvironment", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string" - }, - "env": { - "type": "string", - "nullable": true - } - }, - "required": ["mysqlId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mysql.update": { - "post": { - "operationId": "mysql-update", - "tags": ["mysql"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mysqlId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "databaseName": { - "type": "string", - "minLength": 1 - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - }, - "databaseRootPassword": { - "type": "string" - }, - "dockerImage": { - "type": "string", - "default": "mysql:8" - }, - "command": { - "type": "string", - "nullable": true - }, - "env": { - "type": "string", - "nullable": true - }, - "memoryReservation": { - "type": "number", - "nullable": true - }, - "memoryLimit": { - "type": "number", - "nullable": true - }, - "cpuReservation": { - "type": "number", - "nullable": true - }, - "cpuLimit": { - "type": "number", - "nullable": true - }, - "externalPort": { - "type": "number", - "nullable": true - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - }, - "createdAt": { - "type": "string" - }, - "projectId": { - "type": "string" - } - }, - "required": ["mysqlId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.create": { - "post": { - "operationId": "postgres-create", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string" - }, - "databaseName": { - "type": "string", - "minLength": 1 - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - }, - "dockerImage": { - "type": "string", - "default": "postgres:15" - }, - "projectId": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - } - }, - "required": [ - "name", - "appName", - "databaseName", - "databaseUser", - "databasePassword", - "projectId" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.one": { - "get": { - "operationId": "postgres-one", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "postgresId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.start": { - "post": { - "operationId": "postgres-start", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - } - }, - "required": ["postgresId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.stop": { - "post": { - "operationId": "postgres-stop", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - } - }, - "required": ["postgresId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.saveExternalPort": { - "post": { - "operationId": "postgres-saveExternalPort", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - }, - "externalPort": { - "type": "number", - "nullable": true - } - }, - "required": ["postgresId", "externalPort"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.deploy": { - "post": { - "operationId": "postgres-deploy", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - } - }, - "required": ["postgresId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.changeStatus": { - "post": { - "operationId": "postgres-changeStatus", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - } - }, - "required": ["postgresId", "applicationStatus"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.remove": { - "post": { - "operationId": "postgres-remove", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - } - }, - "required": ["postgresId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.saveEnvironment": { - "post": { - "operationId": "postgres-saveEnvironment", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - }, - "env": { - "type": "string", - "nullable": true - } - }, - "required": ["postgresId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.reload": { - "post": { - "operationId": "postgres-reload", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string" - }, - "appName": { - "type": "string" - } - }, - "required": ["postgresId", "appName"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/postgres.update": { - "post": { - "operationId": "postgres-update", - "tags": ["postgres"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "postgresId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string" - }, - "databaseName": { - "type": "string", - "minLength": 1 - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - }, - "dockerImage": { - "type": "string", - "default": "postgres:15" - }, - "command": { - "type": "string", - "nullable": true - }, - "env": { - "type": "string", - "nullable": true - }, - "memoryReservation": { - "type": "number", - "nullable": true - }, - "externalPort": { - "type": "number", - "nullable": true - }, - "memoryLimit": { - "type": "number", - "nullable": true - }, - "cpuReservation": { - "type": "number", - "nullable": true - }, - "cpuLimit": { - "type": "number", - "nullable": true - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - }, - "createdAt": { - "type": "string" - }, - "projectId": { - "type": "string" - } - }, - "required": ["postgresId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.create": { - "post": { - "operationId": "redis-create", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - }, - "dockerImage": { - "type": "string", - "default": "redis:8" - }, - "projectId": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - } - }, - "required": [ - "name", - "appName", - "databasePassword", - "projectId" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.one": { - "get": { - "operationId": "redis-one", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "redisId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.start": { - "post": { - "operationId": "redis-start", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - } - }, - "required": ["redisId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.reload": { - "post": { - "operationId": "redis-reload", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - }, - "appName": { - "type": "string", - "minLength": 1 - } - }, - "required": ["redisId", "appName"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.stop": { - "post": { - "operationId": "redis-stop", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - } - }, - "required": ["redisId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.saveExternalPort": { - "post": { - "operationId": "redis-saveExternalPort", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - }, - "externalPort": { - "type": "number", - "nullable": true - } - }, - "required": ["redisId", "externalPort"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.deploy": { - "post": { - "operationId": "redis-deploy", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - } - }, - "required": ["redisId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.changeStatus": { - "post": { - "operationId": "redis-changeStatus", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - } - }, - "required": ["redisId", "applicationStatus"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.remove": { - "post": { - "operationId": "redis-remove", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - } - }, - "required": ["redisId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.saveEnvironment": { - "post": { - "operationId": "redis-saveEnvironment", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string" - }, - "env": { - "type": "string", - "nullable": true - } - }, - "required": ["redisId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redis.update": { - "post": { - "operationId": "redis-update", - "tags": ["redis"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redisId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "databasePassword": { - "type": "string" - }, - "dockerImage": { - "type": "string", - "default": "redis:8" - }, - "command": { - "type": "string", - "nullable": true - }, - "env": { - "type": "string", - "nullable": true - }, - "memoryReservation": { - "type": "number", - "nullable": true - }, - "memoryLimit": { - "type": "number", - "nullable": true - }, - "cpuReservation": { - "type": "number", - "nullable": true - }, - "cpuLimit": { - "type": "number", - "nullable": true - }, - "externalPort": { - "type": "number", - "nullable": true - }, - "createdAt": { - "type": "string" - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - }, - "projectId": { - "type": "string" - } - }, - "required": ["redisId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.create": { - "post": { - "operationId": "mongo-create", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "dockerImage": { - "type": "string", - "default": "mongo:15" - }, - "projectId": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - } - }, - "required": [ - "name", - "appName", - "projectId", - "databaseUser", - "databasePassword" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.one": { - "get": { - "operationId": "mongo-one", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "mongoId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.start": { - "post": { - "operationId": "mongo-start", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - } - }, - "required": ["mongoId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.stop": { - "post": { - "operationId": "mongo-stop", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - } - }, - "required": ["mongoId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.saveExternalPort": { - "post": { - "operationId": "mongo-saveExternalPort", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - }, - "externalPort": { - "type": "number", - "nullable": true - } - }, - "required": ["mongoId", "externalPort"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.deploy": { - "post": { - "operationId": "mongo-deploy", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - } - }, - "required": ["mongoId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.changeStatus": { - "post": { - "operationId": "mongo-changeStatus", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - } - }, - "required": ["mongoId", "applicationStatus"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.reload": { - "post": { - "operationId": "mongo-reload", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - }, - "appName": { - "type": "string", - "minLength": 1 - } - }, - "required": ["mongoId", "appName"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.remove": { - "post": { - "operationId": "mongo-remove", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - } - }, - "required": ["mongoId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.saveEnvironment": { - "post": { - "operationId": "mongo-saveEnvironment", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string" - }, - "env": { - "type": "string", - "nullable": true - } - }, - "required": ["mongoId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mongo.update": { - "post": { - "operationId": "mongo-update", - "tags": ["mongo"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mongoId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - }, - "dockerImage": { - "type": "string", - "default": "mongo:15" - }, - "command": { - "type": "string", - "nullable": true - }, - "env": { - "type": "string", - "nullable": true - }, - "memoryReservation": { - "type": "number", - "nullable": true - }, - "memoryLimit": { - "type": "number", - "nullable": true - }, - "cpuReservation": { - "type": "number", - "nullable": true - }, - "cpuLimit": { - "type": "number", - "nullable": true - }, - "externalPort": { - "type": "number", - "nullable": true - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - }, - "createdAt": { - "type": "string" - }, - "projectId": { - "type": "string" - } - }, - "required": ["mongoId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.create": { - "post": { - "operationId": "mariadb-create", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "dockerImage": { - "type": "string", - "default": "mariadb:6" - }, - "databaseRootPassword": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - }, - "databaseName": { - "type": "string", - "minLength": 1 - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - } - }, - "required": [ - "name", - "appName", - "databaseRootPassword", - "projectId", - "databaseName", - "databaseUser", - "databasePassword" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.one": { - "get": { - "operationId": "mariadb-one", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "mariadbId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.start": { - "post": { - "operationId": "mariadb-start", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - } - }, - "required": ["mariadbId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.stop": { - "post": { - "operationId": "mariadb-stop", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - } - }, - "required": ["mariadbId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.saveExternalPort": { - "post": { - "operationId": "mariadb-saveExternalPort", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - }, - "externalPort": { - "type": "number", - "nullable": true - } - }, - "required": ["mariadbId", "externalPort"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.deploy": { - "post": { - "operationId": "mariadb-deploy", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - } - }, - "required": ["mariadbId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.changeStatus": { - "post": { - "operationId": "mariadb-changeStatus", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - } - }, - "required": ["mariadbId", "applicationStatus"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.remove": { - "post": { - "operationId": "mariadb-remove", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - } - }, - "required": ["mariadbId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.saveEnvironment": { - "post": { - "operationId": "mariadb-saveEnvironment", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - }, - "env": { - "type": "string", - "nullable": true - } - }, - "required": ["mariadbId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.reload": { - "post": { - "operationId": "mariadb-reload", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string" - }, - "appName": { - "type": "string", - "minLength": 1 - } - }, - "required": ["mariadbId", "appName"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mariadb.update": { - "post": { - "operationId": "mariadb-update", - "tags": ["mariadb"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mariadbId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "databaseName": { - "type": "string", - "minLength": 1 - }, - "databaseUser": { - "type": "string", - "minLength": 1 - }, - "databasePassword": { - "type": "string" - }, - "databaseRootPassword": { - "type": "string" - }, - "dockerImage": { - "type": "string", - "default": "mariadb:6" - }, - "command": { - "type": "string", - "nullable": true - }, - "env": { - "type": "string", - "nullable": true - }, - "memoryReservation": { - "type": "number", - "nullable": true - }, - "memoryLimit": { - "type": "number", - "nullable": true - }, - "cpuReservation": { - "type": "number", - "nullable": true - }, - "cpuLimit": { - "type": "number", - "nullable": true - }, - "externalPort": { - "type": "number", - "nullable": true - }, - "applicationStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - }, - "createdAt": { - "type": "string" - }, - "projectId": { - "type": "string" - } - }, - "required": ["mariadbId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.create": { - "post": { - "operationId": "compose-create", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "projectId": { - "type": "string" - }, - "composeType": { - "type": "string", - "enum": ["docker-compose", "stack"] - }, - "appName": { - "type": "string" - } - }, - "required": ["name", "projectId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.one": { - "get": { - "operationId": "compose-one", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "composeId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.update": { - "post": { - "operationId": "compose-update", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "appName": { - "type": "string" - }, - "description": { - "type": "string", - "nullable": true - }, - "env": { - "type": "string", - "nullable": true - }, - "composeFile": { - "type": "string" - }, - "refreshToken": { - "type": "string", - "nullable": true - }, - "sourceType": { - "type": "string", - "enum": ["git", "github", "gitlab", "bitbucket", "raw"] - }, - "composeType": { - "type": "string", - "enum": ["docker-compose", "stack"] - }, - "repository": { - "type": "string", - "nullable": true - }, - "owner": { - "type": "string", - "nullable": true - }, - "branch": { - "type": "string", - "nullable": true - }, - "autoDeploy": { - "type": "boolean", - "nullable": true - }, - "gitlabProjectId": { - "type": "number", - "nullable": true - }, - "gitlabRepository": { - "type": "string", - "nullable": true - }, - "gitlabOwner": { - "type": "string", - "nullable": true - }, - "gitlabBranch": { - "type": "string", - "nullable": true - }, - "gitlabPathNamespace": { - "type": "string", - "nullable": true - }, - "bitbucketRepository": { - "type": "string", - "nullable": true - }, - "bitbucketOwner": { - "type": "string", - "nullable": true - }, - "bitbucketBranch": { - "type": "string", - "nullable": true - }, - "customGitUrl": { - "type": "string", - "nullable": true - }, - "customGitBranch": { - "type": "string", - "nullable": true - }, - "customGitSSHKeyId": { - "type": "string", - "nullable": true - }, - "command": { - "type": "string" - }, - "composePath": { - "type": "string", - "minLength": 1 - }, - "composeStatus": { - "type": "string", - "enum": ["idle", "running", "done", "error"] - }, - "projectId": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "githubId": { - "type": "string", - "nullable": true - }, - "gitlabId": { - "type": "string", - "nullable": true - }, - "bitbucketId": { - "type": "string", - "nullable": true - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.delete": { - "post": { - "operationId": "compose-delete", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.cleanQueues": { - "post": { - "operationId": "compose-cleanQueues", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.loadServices": { - "get": { - "operationId": "compose-loadServices", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "composeId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - }, - { - "name": "type", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "not": {} - }, - { - "type": "string", - "enum": ["fetch", "cache"] - } - ], - "default": "cache" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.fetchSourceType": { - "post": { - "operationId": "compose-fetchSourceType", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.randomizeCompose": { - "post": { - "operationId": "compose-randomizeCompose", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - }, - "prefix": { - "type": "string" - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.getConvertedCompose": { - "get": { - "operationId": "compose-getConvertedCompose", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "composeId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.deploy": { - "post": { - "operationId": "compose-deploy", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.redeploy": { - "post": { - "operationId": "compose-redeploy", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.stop": { - "post": { - "operationId": "compose-stop", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.getDefaultCommand": { - "get": { - "operationId": "compose-getDefaultCommand", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "composeId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.refreshToken": { - "post": { - "operationId": "compose-refreshToken", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "composeId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["composeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.deployTemplate": { - "post": { - "operationId": "compose-deployTemplate", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "projectId": { - "type": "string" - }, - "id": { - "type": "string", - "minLength": 1 - } - }, - "required": ["projectId", "id"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.templates": { - "get": { - "operationId": "compose-templates", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/compose.getTags": { - "get": { - "operationId": "compose-getTags", - "tags": ["compose"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/user.all": { - "get": { - "operationId": "user-all", - "tags": ["user"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/user.byAuthId": { - "get": { - "operationId": "user-byAuthId", - "tags": ["user"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "authId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/user.byUserId": { - "get": { - "operationId": "user-byUserId", - "tags": ["user"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "userId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/domain.create": { - "post": { - "operationId": "domain-create", - "tags": ["domain"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "host": { - "type": "string", - "minLength": 1 - }, - "path": { - "type": "string", - "minLength": 1, - "nullable": true - }, - "port": { - "type": "number", - "minimum": 1, - "maximum": 65535, - "nullable": true - }, - "https": { - "type": "boolean" - }, - "applicationId": { - "type": "string", - "nullable": true - }, - "certificateType": { - "type": "string", - "enum": ["letsencrypt", "none"] - }, - "composeId": { - "type": "string", - "nullable": true - }, - "serviceName": { - "type": "string", - "nullable": true - }, - "domainType": { - "type": "string", - "enum": ["compose", "application"], - "nullable": true - } - }, - "required": ["host"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/domain.byApplicationId": { - "get": { - "operationId": "domain-byApplicationId", - "tags": ["domain"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "applicationId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/domain.byComposeId": { - "get": { - "operationId": "domain-byComposeId", - "tags": ["domain"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "composeId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/domain.generateDomain": { - "post": { - "operationId": "domain-generateDomain", - "tags": ["domain"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appName": { - "type": "string", - "minLength": 1 - } - }, - "required": ["appName"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/domain.update": { - "post": { - "operationId": "domain-update", - "tags": ["domain"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "host": { - "type": "string", - "minLength": 1 - }, - "path": { - "type": "string", - "minLength": 1, - "nullable": true - }, - "port": { - "type": "number", - "minimum": 1, - "maximum": 65535, - "nullable": true - }, - "https": { - "type": "boolean" - }, - "certificateType": { - "type": "string", - "enum": ["letsencrypt", "none"] - }, - "serviceName": { - "type": "string", - "nullable": true - }, - "domainType": { - "type": "string", - "enum": ["compose", "application"], - "nullable": true - }, - "domainId": { - "type": "string" - } - }, - "required": ["host", "domainId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/domain.one": { - "get": { - "operationId": "domain-one", - "tags": ["domain"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "domainId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/domain.delete": { - "post": { - "operationId": "domain-delete", - "tags": ["domain"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "domainId": { - "type": "string" - } - }, - "required": ["domainId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/destination.create": { - "post": { - "operationId": "destination-create", - "tags": ["destination"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "region": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "secretAccessKey": { - "type": "string" - } - }, - "required": [ - "name", - "accessKey", - "bucket", - "region", - "endpoint", - "secretAccessKey" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/destination.testConnection": { - "post": { - "operationId": "destination-testConnection", - "tags": ["destination"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "region": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "secretAccessKey": { - "type": "string" - } - }, - "required": [ - "name", - "accessKey", - "bucket", - "region", - "endpoint", - "secretAccessKey" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/destination.one": { - "get": { - "operationId": "destination-one", - "tags": ["destination"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "destinationId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/destination.all": { - "get": { - "operationId": "destination-all", - "tags": ["destination"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/destination.remove": { - "post": { - "operationId": "destination-remove", - "tags": ["destination"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "destinationId": { - "type": "string" - } - }, - "required": ["destinationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/destination.update": { - "post": { - "operationId": "destination-update", - "tags": ["destination"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "region": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "secretAccessKey": { - "type": "string" - }, - "destinationId": { - "type": "string" - } - }, - "required": [ - "name", - "accessKey", - "bucket", - "region", - "endpoint", - "secretAccessKey", - "destinationId" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.create": { - "post": { - "operationId": "backup-create", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schedule": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "nullable": true - }, - "prefix": { - "type": "string", - "minLength": 1 - }, - "destinationId": { - "type": "string" - }, - "database": { - "type": "string", - "minLength": 1 - }, - "mariadbId": { - "type": "string", - "nullable": true - }, - "mysqlId": { - "type": "string", - "nullable": true - }, - "postgresId": { - "type": "string", - "nullable": true - }, - "mongoId": { - "type": "string", - "nullable": true - }, - "databaseType": { - "type": "string", - "enum": ["postgres", "mariadb", "mysql", "mongo"] - } - }, - "required": [ - "schedule", - "prefix", - "destinationId", - "database", - "databaseType" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.one": { - "get": { - "operationId": "backup-one", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "backupId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.update": { - "post": { - "operationId": "backup-update", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "schedule": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "nullable": true - }, - "prefix": { - "type": "string", - "minLength": 1 - }, - "backupId": { - "type": "string" - }, - "destinationId": { - "type": "string" - }, - "database": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "schedule", - "prefix", - "backupId", - "destinationId", - "database" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.remove": { - "post": { - "operationId": "backup-remove", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "backupId": { - "type": "string" - } - }, - "required": ["backupId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.manualBackupPostgres": { - "post": { - "operationId": "backup-manualBackupPostgres", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "backupId": { - "type": "string" - } - }, - "required": ["backupId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.manualBackupMySql": { - "post": { - "operationId": "backup-manualBackupMySql", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "backupId": { - "type": "string" - } - }, - "required": ["backupId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.manualBackupMariadb": { - "post": { - "operationId": "backup-manualBackupMariadb", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "backupId": { - "type": "string" - } - }, - "required": ["backupId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/backup.manualBackupMongo": { - "post": { - "operationId": "backup-manualBackupMongo", - "tags": ["backup"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "backupId": { - "type": "string" - } - }, - "required": ["backupId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/deployment.all": { - "get": { - "operationId": "deployment-all", - "tags": ["deployment"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "applicationId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/deployment.allByCompose": { - "get": { - "operationId": "deployment-allByCompose", - "tags": ["deployment"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "composeId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mounts.create": { - "post": { - "operationId": "mounts-create", - "tags": ["mounts"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["bind", "volume", "file"] - }, - "hostPath": { - "type": "string", - "nullable": true - }, - "volumeName": { - "type": "string", - "nullable": true - }, - "content": { - "type": "string", - "nullable": true - }, - "mountPath": { - "type": "string", - "minLength": 1 - }, - "serviceType": { - "type": "string", - "enum": [ - "application", - "postgres", - "mysql", - "mariadb", - "mongo", - "redis", - "compose" - ], - "default": "application" - }, - "filePath": { - "type": "string", - "nullable": true - }, - "serviceId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["type", "mountPath", "serviceId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mounts.remove": { - "post": { - "operationId": "mounts-remove", - "tags": ["mounts"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mountId": { - "type": "string" - } - }, - "required": ["mountId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mounts.one": { - "get": { - "operationId": "mounts-one", - "tags": ["mounts"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "mountId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/mounts.update": { - "post": { - "operationId": "mounts-update", - "tags": ["mounts"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "mountId": { - "type": "string", - "minLength": 1 - }, - "type": { - "type": "string", - "enum": ["bind", "volume", "file"] - }, - "hostPath": { - "type": "string", - "nullable": true - }, - "volumeName": { - "type": "string", - "nullable": true - }, - "filePath": { - "type": "string", - "nullable": true - }, - "content": { - "type": "string", - "nullable": true - }, - "serviceType": { - "type": "string", - "enum": [ - "application", - "postgres", - "mysql", - "mariadb", - "mongo", - "redis", - "compose" - ], - "default": "application" - }, - "mountPath": { - "type": "string", - "minLength": 1 - }, - "applicationId": { - "type": "string", - "nullable": true - }, - "postgresId": { - "type": "string", - "nullable": true - }, - "mariadbId": { - "type": "string", - "nullable": true - }, - "mongoId": { - "type": "string", - "nullable": true - }, - "mysqlId": { - "type": "string", - "nullable": true - }, - "redisId": { - "type": "string", - "nullable": true - }, - "composeId": { - "type": "string", - "nullable": true - } - }, - "required": ["mountId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/certificates.create": { - "post": { - "operationId": "certificates-create", - "tags": ["certificates"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "certificateId": { - "type": "string" - }, - "name": { - "type": "string", - "minLength": 1 - }, - "certificateData": { - "type": "string", - "minLength": 1 - }, - "privateKey": { - "type": "string", - "minLength": 1 - }, - "certificatePath": { - "type": "string" - }, - "autoRenew": { - "type": "boolean", - "nullable": true - } - }, - "required": ["name", "certificateData", "privateKey"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/certificates.one": { - "get": { - "operationId": "certificates-one", - "tags": ["certificates"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "certificateId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/certificates.remove": { - "post": { - "operationId": "certificates-remove", - "tags": ["certificates"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "certificateId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["certificateId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/certificates.all": { - "get": { - "operationId": "certificates-all", - "tags": ["certificates"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.reloadServer": { - "post": { - "operationId": "settings-reloadServer", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.reloadTraefik": { - "post": { - "operationId": "settings-reloadTraefik", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.toggleDashboard": { - "post": { - "operationId": "settings-toggleDashboard", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "enableDashboard": { - "type": "boolean" - } - }, - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanUnusedImages": { - "post": { - "operationId": "settings-cleanUnusedImages", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanUnusedVolumes": { - "post": { - "operationId": "settings-cleanUnusedVolumes", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanStoppedContainers": { - "post": { - "operationId": "settings-cleanStoppedContainers", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanDockerBuilder": { - "post": { - "operationId": "settings-cleanDockerBuilder", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanDockerPrune": { - "post": { - "operationId": "settings-cleanDockerPrune", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanAll": { - "post": { - "operationId": "settings-cleanAll", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanMonitoring": { - "post": { - "operationId": "settings-cleanMonitoring", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.saveSSHPrivateKey": { - "post": { - "operationId": "settings-saveSSHPrivateKey", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "sshPrivateKey": { - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.assignDomainServer": { - "post": { - "operationId": "settings-assignDomainServer", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "letsEncryptEmail": { - "type": "string", - "nullable": true - }, - "host": { - "type": "string", - "nullable": true - }, - "certificateType": { - "type": "string", - "enum": ["letsencrypt", "none"], - "default": "none" - } - }, - "required": ["letsEncryptEmail", "host"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.cleanSSHPrivateKey": { - "post": { - "operationId": "settings-cleanSSHPrivateKey", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.updateDockerCleanup": { - "post": { - "operationId": "settings-updateDockerCleanup", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "enableDockerCleanup": { - "type": "boolean" - } - }, - "required": ["enableDockerCleanup"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.readTraefikConfig": { - "get": { - "operationId": "settings-readTraefikConfig", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.updateTraefikConfig": { - "post": { - "operationId": "settings-updateTraefikConfig", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "traefikConfig": { - "type": "string", - "minLength": 1 - } - }, - "required": ["traefikConfig"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.readWebServerTraefikConfig": { - "get": { - "operationId": "settings-readWebServerTraefikConfig", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.updateWebServerTraefikConfig": { - "post": { - "operationId": "settings-updateWebServerTraefikConfig", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "traefikConfig": { - "type": "string", - "minLength": 1 - } - }, - "required": ["traefikConfig"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.readMiddlewareTraefikConfig": { - "get": { - "operationId": "settings-readMiddlewareTraefikConfig", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.updateMiddlewareTraefikConfig": { - "post": { - "operationId": "settings-updateMiddlewareTraefikConfig", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "traefikConfig": { - "type": "string", - "minLength": 1 - } - }, - "required": ["traefikConfig"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.checkAndUpdateImage": { - "post": { - "operationId": "settings-checkAndUpdateImage", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.updateServer": { - "post": { - "operationId": "settings-updateServer", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.getDokployVersion": { - "get": { - "operationId": "settings-getDokployVersion", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.readDirectories": { - "get": { - "operationId": "settings-readDirectories", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.updateTraefikFile": { - "post": { - "operationId": "settings-updateTraefikFile", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "path": { - "type": "string", - "minLength": 1 - }, - "traefikConfig": { - "type": "string", - "minLength": 1 - } - }, - "required": ["path", "traefikConfig"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.readTraefikFile": { - "get": { - "operationId": "settings-readTraefikFile", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "path", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.getIp": { - "get": { - "operationId": "settings-getIp", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.getOpenApiDocument": { - "get": { - "operationId": "settings-getOpenApiDocument", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.readTraefikEnv": { - "get": { - "operationId": "settings-readTraefikEnv", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.writeTraefikEnv": { - "post": { - "operationId": "settings-writeTraefikEnv", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "env": { - "type": "string" - } - }, - "required": ["env"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/settings.haveTraefikDashboardPortEnabled": { - "get": { - "operationId": "settings-haveTraefikDashboardPortEnabled", - "tags": ["settings"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/security.create": { - "post": { - "operationId": "security-create", - "tags": ["security"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "applicationId": { - "type": "string" - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - }, - "required": ["applicationId", "username", "password"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/security.one": { - "get": { - "operationId": "security-one", - "tags": ["security"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "securityId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/security.delete": { - "post": { - "operationId": "security-delete", - "tags": ["security"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "securityId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["securityId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/security.update": { - "post": { - "operationId": "security-update", - "tags": ["security"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "securityId": { - "type": "string", - "minLength": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - }, - "required": ["securityId", "username", "password"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redirects.create": { - "post": { - "operationId": "redirects-create", - "tags": ["redirects"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "regex": { - "type": "string", - "minLength": 1 - }, - "replacement": { - "type": "string", - "minLength": 1 - }, - "permanent": { - "type": "boolean" - }, - "applicationId": { - "type": "string" - } - }, - "required": [ - "regex", - "replacement", - "permanent", - "applicationId" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redirects.one": { - "get": { - "operationId": "redirects-one", - "tags": ["redirects"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "redirectId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redirects.delete": { - "post": { - "operationId": "redirects-delete", - "tags": ["redirects"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["redirectId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/redirects.update": { - "post": { - "operationId": "redirects-update", - "tags": ["redirects"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectId": { - "type": "string", - "minLength": 1 - }, - "regex": { - "type": "string", - "minLength": 1 - }, - "replacement": { - "type": "string", - "minLength": 1 - }, - "permanent": { - "type": "boolean" - } - }, - "required": ["redirectId", "regex", "replacement", "permanent"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/port.create": { - "post": { - "operationId": "port-create", - "tags": ["port"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "publishedPort": { - "type": "number" - }, - "targetPort": { - "type": "number" - }, - "protocol": { - "type": "string", - "enum": ["tcp", "udp"], - "default": "tcp" - }, - "applicationId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["publishedPort", "targetPort", "applicationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/port.one": { - "get": { - "operationId": "port-one", - "tags": ["port"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "portId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/port.delete": { - "post": { - "operationId": "port-delete", - "tags": ["port"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "portId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["portId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/port.update": { - "post": { - "operationId": "port-update", - "tags": ["port"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "portId": { - "type": "string", - "minLength": 1 - }, - "publishedPort": { - "type": "number" - }, - "targetPort": { - "type": "number" - }, - "protocol": { - "type": "string", - "enum": ["tcp", "udp"], - "default": "tcp" - } - }, - "required": ["portId", "publishedPort", "targetPort"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/registry.create": { - "post": { - "operationId": "registry-create", - "tags": ["registry"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "registryName": { - "type": "string", - "minLength": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "registryUrl": { - "type": "string" - }, - "registryType": { - "type": "string", - "enum": ["selfHosted", "cloud"] - }, - "imagePrefix": { - "type": "string", - "nullable": true - } - }, - "required": [ - "registryName", - "username", - "password", - "registryUrl", - "registryType", - "imagePrefix" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/registry.remove": { - "post": { - "operationId": "registry-remove", - "tags": ["registry"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "registryId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["registryId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/registry.update": { - "post": { - "operationId": "registry-update", - "tags": ["registry"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "registryId": { - "type": "string", - "minLength": 1 - }, - "registryName": { - "type": "string", - "minLength": 1 - }, - "imagePrefix": { - "type": "string", - "nullable": true - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "registryUrl": { - "type": "string", - "minLength": 1 - }, - "createdAt": { - "type": "string" - }, - "registryType": { - "type": "string", - "enum": ["selfHosted", "cloud"] - }, - "adminId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["registryId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/registry.all": { - "get": { - "operationId": "registry-all", - "tags": ["registry"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/registry.one": { - "get": { - "operationId": "registry-one", - "tags": ["registry"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "registryId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/registry.testRegistry": { - "post": { - "operationId": "registry-testRegistry", - "tags": ["registry"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "registryName": { - "type": "string", - "minLength": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "registryUrl": { - "type": "string" - }, - "registryType": { - "type": "string", - "enum": ["selfHosted", "cloud"] - }, - "imagePrefix": { - "type": "string", - "nullable": true - } - }, - "required": [ - "registryName", - "username", - "password", - "registryUrl", - "registryType" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/registry.enableSelfHostedRegistry": { - "post": { - "operationId": "registry-enableSelfHostedRegistry", - "tags": ["registry"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "registryUrl": { - "type": "string", - "minLength": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - }, - "required": ["registryUrl", "username", "password"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/cluster.getNodes": { - "get": { - "operationId": "cluster-getNodes", - "tags": ["cluster"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/cluster.removeWorker": { - "post": { - "operationId": "cluster-removeWorker", - "tags": ["cluster"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "nodeId": { - "type": "string" - } - }, - "required": ["nodeId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/cluster.addWorker": { - "get": { - "operationId": "cluster-addWorker", - "tags": ["cluster"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/cluster.addManager": { - "get": { - "operationId": "cluster-addManager", - "tags": ["cluster"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.createSlack": { - "post": { - "operationId": "notification-createSlack", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "webhookUrl": { - "type": "string", - "minLength": 1 - }, - "channel": { - "type": "string" - } - }, - "required": [ - "appBuildError", - "databaseBackup", - "dokployRestart", - "name", - "appDeploy", - "dockerCleanup", - "webhookUrl", - "channel" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.updateSlack": { - "post": { - "operationId": "notification-updateSlack", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "webhookUrl": { - "type": "string", - "minLength": 1 - }, - "channel": { - "type": "string" - }, - "notificationId": { - "type": "string", - "minLength": 1 - }, - "slackId": { - "type": "string" - } - }, - "required": ["notificationId", "slackId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.testSlackConnection": { - "post": { - "operationId": "notification-testSlackConnection", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "webhookUrl": { - "type": "string", - "minLength": 1 - }, - "channel": { - "type": "string" - } - }, - "required": ["webhookUrl", "channel"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.createTelegram": { - "post": { - "operationId": "notification-createTelegram", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "botToken": { - "type": "string", - "minLength": 1 - }, - "chatId": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "appBuildError", - "databaseBackup", - "dokployRestart", - "name", - "appDeploy", - "dockerCleanup", - "botToken", - "chatId" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.updateTelegram": { - "post": { - "operationId": "notification-updateTelegram", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "botToken": { - "type": "string", - "minLength": 1 - }, - "chatId": { - "type": "string", - "minLength": 1 - }, - "notificationId": { - "type": "string", - "minLength": 1 - }, - "telegramId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["notificationId", "telegramId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.testTelegramConnection": { - "post": { - "operationId": "notification-testTelegramConnection", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "botToken": { - "type": "string", - "minLength": 1 - }, - "chatId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["botToken", "chatId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.createDiscord": { - "post": { - "operationId": "notification-createDiscord", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "webhookUrl": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "appBuildError", - "databaseBackup", - "dokployRestart", - "name", - "appDeploy", - "dockerCleanup", - "webhookUrl" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.updateDiscord": { - "post": { - "operationId": "notification-updateDiscord", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "webhookUrl": { - "type": "string", - "minLength": 1 - }, - "notificationId": { - "type": "string", - "minLength": 1 - }, - "discordId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["notificationId", "discordId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.testDiscordConnection": { - "post": { - "operationId": "notification-testDiscordConnection", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "webhookUrl": { - "type": "string", - "minLength": 1 - } - }, - "required": ["webhookUrl"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.createEmail": { - "post": { - "operationId": "notification-createEmail", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "smtpServer": { - "type": "string", - "minLength": 1 - }, - "smtpPort": { - "type": "number", - "minimum": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "fromAddress": { - "type": "string", - "minLength": 1 - }, - "toAddresses": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - }, - "required": [ - "appBuildError", - "databaseBackup", - "dokployRestart", - "name", - "appDeploy", - "dockerCleanup", - "smtpServer", - "smtpPort", - "username", - "password", - "fromAddress", - "toAddresses" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.updateEmail": { - "post": { - "operationId": "notification-updateEmail", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "appBuildError": { - "type": "boolean" - }, - "databaseBackup": { - "type": "boolean" - }, - "dokployRestart": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "appDeploy": { - "type": "boolean" - }, - "dockerCleanup": { - "type": "boolean" - }, - "smtpServer": { - "type": "string", - "minLength": 1 - }, - "smtpPort": { - "type": "number", - "minimum": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "fromAddress": { - "type": "string", - "minLength": 1 - }, - "toAddresses": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "notificationId": { - "type": "string", - "minLength": 1 - }, - "emailId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["notificationId", "emailId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.testEmailConnection": { - "post": { - "operationId": "notification-testEmailConnection", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "smtpServer": { - "type": "string", - "minLength": 1 - }, - "smtpPort": { - "type": "number", - "minimum": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "toAddresses": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "fromAddress": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "smtpServer", - "smtpPort", - "username", - "password", - "toAddresses", - "fromAddress" - ], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.remove": { - "post": { - "operationId": "notification-remove", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "notificationId": { - "type": "string" - } - }, - "required": ["notificationId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.one": { - "get": { - "operationId": "notification-one", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "notificationId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/notification.all": { - "get": { - "operationId": "notification-all", - "tags": ["notification"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/sshKey.create": { - "post": { - "operationId": "sshKey-create", - "tags": ["sshKey"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "publicKey": { - "type": "string" - }, - "privateKey": { - "type": "string" - } - }, - "required": ["name", "publicKey", "privateKey"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/sshKey.remove": { - "post": { - "operationId": "sshKey-remove", - "tags": ["sshKey"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "sshKeyId": { - "type": "string" - } - }, - "required": ["sshKeyId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/sshKey.one": { - "get": { - "operationId": "sshKey-one", - "tags": ["sshKey"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "sshKeyId", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/sshKey.all": { - "get": { - "operationId": "sshKey-all", - "tags": ["sshKey"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/sshKey.generate": { - "post": { - "operationId": "sshKey-generate", - "tags": ["sshKey"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["rsa", "ed25519"] - } - }, - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/sshKey.update": { - "post": { - "operationId": "sshKey-update", - "tags": ["sshKey"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "nullable": true - }, - "lastUsedAt": { - "type": "string", - "nullable": true - }, - "sshKeyId": { - "type": "string" - } - }, - "required": ["sshKeyId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitProvider.getAll": { - "get": { - "operationId": "gitProvider-getAll", - "tags": ["gitProvider"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitProvider.remove": { - "post": { - "operationId": "gitProvider-remove", - "tags": ["gitProvider"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "gitProviderId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["gitProviderId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/bitbucket.create": { - "post": { - "operationId": "bitbucket-create", - "tags": ["bitbucket"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "bitbucketId": { - "type": "string" - }, - "bitbucketUsername": { - "type": "string" - }, - "appPassword": { - "type": "string" - }, - "bitbucketWorkspaceName": { - "type": "string" - }, - "gitProviderId": { - "type": "string" - }, - "authId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - } - }, - "required": ["authId", "name"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/bitbucket.one": { - "get": { - "operationId": "bitbucket-one", - "tags": ["bitbucket"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "bitbucketId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/bitbucket.bitbucketProviders": { - "get": { - "operationId": "bitbucket-bitbucketProviders", - "tags": ["bitbucket"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/bitbucket.getBitbucketRepositories": { - "get": { - "operationId": "bitbucket-getBitbucketRepositories", - "tags": ["bitbucket"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "bitbucketId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/bitbucket.getBitbucketBranches": { - "get": { - "operationId": "bitbucket-getBitbucketBranches", - "tags": ["bitbucket"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "owner", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "repo", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "bitbucketId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/bitbucket.testConnection": { - "post": { - "operationId": "bitbucket-testConnection", - "tags": ["bitbucket"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "bitbucketId": { - "type": "string", - "minLength": 1 - }, - "bitbucketUsername": { - "type": "string" - }, - "workspaceName": { - "type": "string" - } - }, - "required": ["bitbucketId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/bitbucket.update": { - "post": { - "operationId": "bitbucket-update", - "tags": ["bitbucket"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "bitbucketId": { - "type": "string", - "minLength": 1 - }, - "bitbucketUsername": { - "type": "string" - }, - "appPassword": { - "type": "string", - "nullable": true - }, - "bitbucketWorkspaceName": { - "type": "string" - }, - "gitProviderId": { - "type": "string" - }, - "name": { - "type": "string", - "minLength": 1 - } - }, - "required": ["bitbucketId", "gitProviderId", "name"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitlab.create": { - "post": { - "operationId": "gitlab-create", - "tags": ["gitlab"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "gitlabId": { - "type": "string" - }, - "applicationId": { - "type": "string" - }, - "redirectUri": { - "type": "string" - }, - "secret": { - "type": "string" - }, - "accessToken": { - "type": "string", - "nullable": true - }, - "refreshToken": { - "type": "string", - "nullable": true - }, - "groupName": { - "type": "string" - }, - "expiresAt": { - "type": "number", - "nullable": true - }, - "gitProviderId": { - "type": "string" - }, - "authId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - } - }, - "required": ["authId", "name"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitlab.one": { - "get": { - "operationId": "gitlab-one", - "tags": ["gitlab"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "gitlabId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitlab.gitlabProviders": { - "get": { - "operationId": "gitlab-gitlabProviders", - "tags": ["gitlab"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitlab.getGitlabRepositories": { - "get": { - "operationId": "gitlab-getGitlabRepositories", - "tags": ["gitlab"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "gitlabId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitlab.getGitlabBranches": { - "get": { - "operationId": "gitlab-getGitlabBranches", - "tags": ["gitlab"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "id", - "in": "query", - "required": false, - "schema": { - "type": "number" - } - }, - { - "name": "owner", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "repo", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "gitlabId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitlab.testConnection": { - "post": { - "operationId": "gitlab-testConnection", - "tags": ["gitlab"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "gitlabId": { - "type": "string" - }, - "groupName": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/gitlab.update": { - "post": { - "operationId": "gitlab-update", - "tags": ["gitlab"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "gitlabId": { - "type": "string", - "minLength": 1 - }, - "applicationId": { - "type": "string" - }, - "redirectUri": { - "type": "string" - }, - "secret": { - "type": "string" - }, - "accessToken": { - "type": "string", - "nullable": true - }, - "refreshToken": { - "type": "string", - "nullable": true - }, - "groupName": { - "type": "string" - }, - "expiresAt": { - "type": "number", - "nullable": true - }, - "gitProviderId": { - "type": "string" - }, - "name": { - "type": "string", - "minLength": 1 - } - }, - "required": ["gitlabId", "gitProviderId", "name"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/github.one": { - "get": { - "operationId": "github-one", - "tags": ["github"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "githubId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/github.getGithubRepositories": { - "get": { - "operationId": "github-getGithubRepositories", - "tags": ["github"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "githubId", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/github.getGithubBranches": { - "get": { - "operationId": "github-getGithubBranches", - "tags": ["github"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [ - { - "name": "repo", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - }, - { - "name": "owner", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1 - } - }, - { - "name": "githubId", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/github.githubProviders": { - "get": { - "operationId": "github-githubProviders", - "tags": ["github"], - "security": [ - { - "Authorization": [] - } - ], - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/github.testConnection": { - "post": { - "operationId": "github-testConnection", - "tags": ["github"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "githubId": { - "type": "string", - "minLength": 1 - } - }, - "required": ["githubId"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - }, - "/github.update": { - "post": { - "operationId": "github-update", - "tags": ["github"], - "security": [ - { - "Authorization": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "githubId": { - "type": "string", - "minLength": 1 - }, - "githubAppName": { - "type": "string", - "nullable": true - }, - "githubAppId": { - "type": "number", - "nullable": true - }, - "githubClientId": { - "type": "string", - "nullable": true - }, - "githubClientSecret": { - "type": "string", - "nullable": true - }, - "githubInstallationId": { - "type": "string", - "nullable": true - }, - "githubPrivateKey": { - "type": "string", - "nullable": true - }, - "githubWebhookSecret": { - "type": "string", - "nullable": true - }, - "gitProviderId": { - "type": "string", - "minLength": 1 - }, - "name": { - "type": "string", - "minLength": 1 - } - }, - "required": ["githubId", "gitProviderId", "name"], - "additionalProperties": false - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": {} - } - }, - "default": { - "$ref": "#/components/responses/error" - } - } - } - } - }, - "components": { - "securitySchemes": { - "Authorization": { - "type": "http", - "scheme": "bearer" - } - }, - "responses": { - "error": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "string" - }, - "issues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - }, - "required": ["message"], - "additionalProperties": false - } - } - }, - "required": ["message", "code"], - "additionalProperties": false - } - } - } - } - } - }, - "tags": [ - { - "name": "admin" - }, - { - "name": "docker" - }, - { - "name": "compose" - }, - { - "name": "registry" - }, - { - "name": "cluster" - }, - { - "name": "user" - }, - { - "name": "domain" - }, - { - "name": "destination" - }, - { - "name": "backup" - }, - { - "name": "deployment" - }, - { - "name": "mounts" - }, - { - "name": "certificates" - }, - { - "name": "settings" - }, - { - "name": "security" - }, - { - "name": "redirects" - }, - { - "name": "port" - }, - { - "name": "project" - }, - { - "name": "application" - }, - { - "name": "mysql" - }, - { - "name": "postgres" - }, - { - "name": "redis" - }, - { - "name": "mongo" - }, - { - "name": "mariadb" - }, - { - "name": "sshRouter" - }, - { - "name": "gitProvider" - }, - { - "name": "bitbucket" - }, - { - "name": "github" - }, - { - "name": "gitlab" - } - ], - "externalDocs": { - "url": "http://localhost:3000/api/settings.getOpenApiDocument" - } -} diff --git a/apps/docs/app/[lang]/[[...slug]]/page.tsx b/apps/docs/app/[lang]/[[...slug]]/page.tsx deleted file mode 100644 index 8307d655d..000000000 --- a/apps/docs/app/[lang]/[[...slug]]/page.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { getLanguages, getPage } from "@/app/source"; -import { url, baseUrl } from "@/utils/metadata"; -import { DocsBody, DocsPage } from "fumadocs-ui/page"; -import type { Metadata } from "next"; -import { notFound, permanentRedirect } from "next/navigation"; - -export default async function Page({ - params, -}: { - params: { lang: string; slug?: string[] }; -}) { - const page = getPage(params.slug, params.lang); - - if (page == null) { - permanentRedirect("/docs/core/get-started/introduction"); - } - - const MDX = page.data.exports.default; - - return ( - - -

{page.data.title}

- -
-
- ); -} - -export async function generateStaticParams() { - return getLanguages().flatMap(({ language, pages }) => - pages.map((page) => ({ - lang: language, - slug: page.slugs, - })), - ); -} - -export function generateMetadata({ - params, -}: { - params: { lang: string; slug?: string[] }; -}) { - const page = getPage(params.slug, params.lang); - if (page == null) { - permanentRedirect("/docs/core/get-started/introduction"); - } - return { - title: page.data.title, - - description: page.data.description, - robots: "index,follow", - alternates: { - canonical: new URL(`${baseUrl}${page.url}`).toString(), - languages: { - zh: `${baseUrl}/cn${page.url.replace("/cn", "")}`, - en: `${baseUrl}/en${page.url.replace("/en", "")}`, - }, - }, - openGraph: { - title: page.data.title, - description: page.data.description, - url: new URL(`${baseUrl}`).toString(), - images: [ - { - url: new URL( - `${baseUrl}/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flogo.7cfd81d9.png&w=828&q=75`, - ).toString(), - width: 1200, - height: 630, - alt: page.data.title, - }, - ], - }, - twitter: { - card: "summary_large_image", - creator: "@getdokploy", - title: page.data.title, - description: page.data.description, - images: [ - { - url: new URL( - `${baseUrl}/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flogo.7cfd81d9.png&w=828&q=75`, - ).toString(), - width: 1200, - height: 630, - alt: page.data.title, - }, - ], - }, - applicationName: "Dokploy Docs", - keywords: [ - "dokploy", - "vps", - "open source", - "cloud", - "self hosting", - "free", - ], - icons: { - icon: "/icon.svg", - }, - } satisfies Metadata; -} diff --git a/apps/docs/app/[lang]/layout.tsx b/apps/docs/app/[lang]/layout.tsx deleted file mode 100644 index 675830267..000000000 --- a/apps/docs/app/[lang]/layout.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { RootToggle } from "fumadocs-ui/components/layout/root-toggle"; -import { I18nProvider } from "fumadocs-ui/i18n"; -import { DocsLayout } from "fumadocs-ui/layout"; -import { RootProvider } from "fumadocs-ui/provider"; -import { Inter } from "next/font/google"; -import type { ReactNode } from "react"; -import { baseOptions } from "../layout.config"; -import { pageTree } from "../source"; -import "../global.css"; -import GoogleAnalytics from "@/components/analytics/google"; -import { - LibraryIcon, - type LucideIcon, - PlugZapIcon, - TerminalIcon, -} from "lucide-react"; -import Script from "next/script"; -const inter = Inter({ - subsets: ["latin"], -}); - -interface Mode { - param: string; - name: string; - package: string; - description: string; - icon: LucideIcon; -} - -const modes: Mode[] = [ - { - param: "core/get-started/introduction", - name: "Core", - package: "Dokploy", - description: "The core", - icon: LibraryIcon, - }, - { - param: "cli", - name: "CLI", - package: "fumadocs-ui", - description: "Interactive CLI", - icon: TerminalIcon, - }, - { - param: "api", - name: "API", - package: "fumadocs-mdx", - description: "API Documentation", - icon: PlugZapIcon, - }, -]; - -export default function Layout({ - params, - children, -}: { - params: { lang: string }; - children: ReactNode; -}) { - return ( - -