diff --git a/.gitignore b/.gitignore index 368c5ed..5df5645 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,5 @@ yarn-error.log* # Misc .DS_Store *.pem + +# Generated files diff --git a/Dockerfile.docs b/Dockerfile.docs index e7721d8..60c602f 100644 --- a/Dockerfile.docs +++ b/Dockerfile.docs @@ -11,6 +11,9 @@ WORKDIR /usr/src/app # Install dependencies RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --filter=./apps/docs --frozen-lockfile +# Generate OpenAPI documentation from apps/docs/public/openapi.json +RUN pnpm --filter=./apps/docs run build:docs + # Deploy only the dokploy app ENV NODE_ENV=production diff --git a/README.md b/README.md index f40e0e7..cdae681 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,6 @@ Example: feat: add new feature ``` - ## Pull Request - The `main` branch is the source of truth and should always reflect the latest stable release. diff --git a/apps/docs/app/docs/[[...slug]]/page.tsx b/apps/docs/app/docs/[[...slug]]/page.tsx index f235418..1527077 100644 --- a/apps/docs/app/docs/[[...slug]]/page.tsx +++ b/apps/docs/app/docs/[[...slug]]/page.tsx @@ -4,114 +4,114 @@ import { baseUrl } from "@/utils/metadata"; import { ImageZoom } from "fumadocs-ui/components/image-zoom"; import defaultMdxComponents from "fumadocs-ui/mdx"; import { - DocsBody, - DocsDescription, - DocsPage, - DocsTitle, + DocsBody, + DocsDescription, + DocsPage, + DocsTitle, } from "fumadocs-ui/page"; import { notFound, permanentRedirect } from "next/navigation"; export default async function Page(props: { - params: Promise<{ slug?: string[] }>; + params: Promise<{ slug?: string[] }>; }) { - const params = await props.params; - const page = source.getPage(params.slug); - if (!page) { - permanentRedirect("/docs/core"); - } + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) { + permanentRedirect("/docs/core"); + } - const MDX = page.data.body; + const MDX = page.data.body; - return ( - - {page.data.title} - {page.data.description} - - , - p: ({ children }) => ( -

- {children} -

- ), - li: ({ children, id }) => ( -
  • - {children} -
  • - ), - APIPage: openapi.APIPage, - }} - /> -
    -
    - ); + return ( + + {page.data.title} + {page.data.description} + + , + p: ({ children }) => ( +

    + {children} +

    + ), + li: ({ children, id }) => ( +
  • + {children} +
  • + ), + APIPage: openapi.APIPage, + }} + /> +
    +
    + ); } export async function generateStaticParams() { - return source.generateParams(); + return source.generateParams(); } export async function generateMetadata(props: { - params: Promise<{ slug?: string[] }>; + params: Promise<{ slug?: string[] }>; }) { - const params = await props.params; - const page = source.getPage(params.slug); - if (!page) notFound(); + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); - return { - title: page.data.title, + return { + title: page.data.title, - description: page.data.description, - robots: "index,follow", - alternates: { - canonical: new URL(`${baseUrl}${page.url}`).toString(), - languages: { - en: `${baseUrl}/${page.url}`, - }, - }, - openGraph: { - title: page.data.title, - description: page.data.description, - url: new URL(`${baseUrl}`).toString(), - images: [ - { - url: new URL(`${baseUrl}/logo.png`).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}/logo.png`).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", - }, - }; + description: page.data.description, + robots: "index,follow", + alternates: { + canonical: new URL(`${baseUrl}${page.url}`).toString(), + languages: { + en: `${baseUrl}/${page.url}`, + }, + }, + openGraph: { + title: page.data.title, + description: page.data.description, + url: new URL(`${baseUrl}`).toString(), + images: [ + { + url: new URL(`${baseUrl}/logo.png`).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}/logo.png`).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", + }, + }; } diff --git a/apps/docs/app/docs/layout.tsx b/apps/docs/app/docs/layout.tsx index fb8ff11..322a090 100644 --- a/apps/docs/app/docs/layout.tsx +++ b/apps/docs/app/docs/layout.tsx @@ -5,18 +5,18 @@ import { DocsLayout } from "fumadocs-ui/layouts/docs"; import type { ReactNode } from "react"; export const metadata = createMetadata({ - title: { - template: "%s | Dokploy", - default: "Dokploy", - }, - description: "The Open Source Alternative to Vercel, Heroku, and Netlify", - metadataBase: new URL(baseUrl), + title: { + template: "%s | Dokploy", + default: "Dokploy", + }, + description: "The Open Source Alternative to Vercel, Heroku, and Netlify", + metadataBase: new URL(baseUrl), }); export default function Layout({ children }: { children: ReactNode }) { - return ( - - {children} - - ); + return ( + + {children} + + ); } diff --git a/apps/docs/app/layout.config.tsx b/apps/docs/app/layout.config.tsx index e9413af..b643745 100644 --- a/apps/docs/app/layout.config.tsx +++ b/apps/docs/app/layout.config.tsx @@ -1,5 +1,12 @@ import type { BaseLayoutProps } from "fumadocs-ui/layouts/shared"; -import { Github, GlobeIcon, HeartIcon, Rss } from "lucide-react"; +import { + Github, + GlobeIcon, + HeartIcon, + Rss, + LogIn, + UserPlus, +} from "lucide-react"; import Link from "next/link"; /** * Shared layout configurations @@ -10,94 +17,106 @@ import Link from "next/link"; */ export const Logo = () => { - return ( - - + return ( + + - + - - - ); + + + ); }; export const baseOptions: BaseLayoutProps = { - nav: { - // title: "Dokploy", - children: ( - - - Dokploy - - ), - }, - links: [ - { - text: "Website", - url: "https://dokploy.com", - active: "nested-url", - icon: , - }, - { - text: "Discord", - url: "https://discord.com/invite/2tBnJ3jDJc", - active: "nested-url", - icon: ( - <> - - - - - ), - }, - { - text: "Support", - url: "https://opencollective.com/dokploy", - active: "nested-url", - icon: ( - <> - - - ), - }, - { - text: "Github", - url: "https://github.com/dokploy/dokploy", - active: "nested-url", - icon: ( - <> - - - ), - }, - { - text: "Blog", - url: "https://dokploy.com/blog", - active: "nested-url", - icon: ( - <> - - - ), - }, - ], + nav: { + // title: "Dokploy", + children: ( + + + Dokploy + + ), + }, + links: [ + { + text: "Login", + url: "https://app.dokploy.com/", + active: "nested-url", + icon: , + }, + { + text: "Sign Up", + url: "https://app.dokploy.com/register", + active: "nested-url", + icon: , + }, + { + text: "Website", + url: "https://dokploy.com", + active: "nested-url", + icon: , + }, + { + text: "Discord", + url: "https://discord.com/invite/2tBnJ3jDJc", + active: "nested-url", + icon: ( + <> + + + + + ), + }, + { + text: "Support", + url: "https://opencollective.com/dokploy", + active: "nested-url", + icon: ( + <> + + + ), + }, + { + text: "Github", + url: "https://github.com/dokploy/dokploy", + active: "nested-url", + icon: ( + <> + + + ), + }, + { + text: "Blog", + url: "https://dokploy.com/blog", + active: "nested-url", + icon: ( + <> + + + ), + }, + ], }; diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx index 1c6adc0..d2bd648 100644 --- a/apps/docs/app/layout.tsx +++ b/apps/docs/app/layout.tsx @@ -4,19 +4,21 @@ import { Inter } from "next/font/google"; import type { ReactNode } from "react"; import { GoogleAnalytics } from "@next/third-parties/google"; const inter = Inter({ - subsets: ["latin"], + subsets: ["latin"], }); export default async function Layout({ - children, - ...rest -}: { children: ReactNode }) { - return ( - - - - {children} - - - ); + children, + ...rest +}: { + children: ReactNode; +}) { + return ( + + + + {children} + + + ); } diff --git a/apps/docs/app/robots.ts b/apps/docs/app/robots.ts index 3b00704..1c2ea94 100644 --- a/apps/docs/app/robots.ts +++ b/apps/docs/app/robots.ts @@ -1,11 +1,11 @@ import type { MetadataRoute } from "next"; export default function robots(): MetadataRoute.Robots { - return { - rules: { - userAgent: "*", - allow: "/", - }, - sitemap: "https://docs.dokploy.com/sitemap.xml", - }; + return { + rules: { + userAgent: "*", + allow: "/", + }, + sitemap: "https://docs.dokploy.com/sitemap.xml", + }; } diff --git a/apps/docs/app/sitemap.ts b/apps/docs/app/sitemap.ts index 39ca0aa..49a40f1 100644 --- a/apps/docs/app/sitemap.ts +++ b/apps/docs/app/sitemap.ts @@ -3,17 +3,17 @@ import { url } from "@/utils/metadata"; import type { MetadataRoute } from "next"; export default async function sitemap(): Promise { - return [ - ...(await Promise.all( - source.getPages().map(async (page) => { - const { lastModified } = page.data; - return { - url: url(page.url), - lastModified: lastModified ? new Date(lastModified) : undefined, - changeFrequency: "weekly", - priority: 0.5, - } as MetadataRoute.Sitemap[number]; - }), - )), - ]; + return [ + ...(await Promise.all( + source.getPages().map(async (page) => { + const { lastModified } = page.data; + return { + url: url(page.url), + lastModified: lastModified ? new Date(lastModified) : undefined, + changeFrequency: "weekly", + priority: 0.5, + } as MetadataRoute.Sitemap[number]; + }), + )), + ]; } diff --git a/apps/docs/content/docs/api/generated/reference-admin.mdx b/apps/docs/content/docs/api/generated/reference-admin.mdx index 548d0bd..60462dc 100644 --- a/apps/docs/content/docs/api/generated/reference-admin.mdx +++ b/apps/docs/content/docs/api/generated/reference-admin.mdx @@ -4,33 +4,13 @@ full: true _openapi: toc: - depth: 2 - title: Admin one - url: '#admin-one' - - depth: 2 - title: Admin create User Invitation - url: '#admin-create-user-invitation' - - depth: 2 - title: Admin remove User - url: '#admin-remove-user' - - depth: 2 - title: Admin get User By Token - url: '#admin-get-user-by-token' - - depth: 2 - title: Admin assign Permissions - url: '#admin-assign-permissions' + title: Admin setup Monitoring + url: '#admin-setup-monitoring' structuredData: headings: - - content: Admin one - id: admin-one - - content: Admin create User Invitation - id: admin-create-user-invitation - - content: Admin remove User - id: admin-remove-user - - content: Admin get User By Token - id: admin-get-user-by-token - - content: Admin assign Permissions - id: admin-assign-permissions + - content: Admin setup Monitoring + id: admin-setup-monitoring contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-ai.mdx b/apps/docs/content/docs/api/generated/reference-ai.mdx new file mode 100644 index 0000000..e27ea17 --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-ai.mdx @@ -0,0 +1,56 @@ +--- +title: Ai +full: true +_openapi: + toc: + - depth: 2 + title: Ai one + url: '#ai-one' + - depth: 2 + title: Ai get Models + url: '#ai-get-models' + - depth: 2 + title: Ai create + url: '#ai-create' + - depth: 2 + title: Ai update + url: '#ai-update' + - depth: 2 + title: Ai get All + url: '#ai-get-all' + - depth: 2 + title: Ai get + url: '#ai-get' + - depth: 2 + title: Ai delete + url: '#ai-delete' + - depth: 2 + title: Ai suggest + url: '#ai-suggest' + - depth: 2 + title: Ai deploy + url: '#ai-deploy' + structuredData: + headings: + - content: Ai one + id: ai-one + - content: Ai get Models + id: ai-get-models + - content: Ai create + id: ai-create + - content: Ai update + id: ai-update + - content: Ai get All + id: ai-get-all + - content: Ai get + id: ai-get + - content: Ai delete + id: ai-delete + - content: Ai suggest + id: ai-suggest + - content: Ai deploy + id: ai-deploy + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-application.mdx b/apps/docs/content/docs/api/generated/reference-application.mdx index 3860b11..66611e4 100644 --- a/apps/docs/content/docs/api/generated/reference-application.mdx +++ b/apps/docs/content/docs/api/generated/reference-application.mdx @@ -39,12 +39,18 @@ _openapi: - depth: 2 title: Application save Bitbucket Provider url: '#application-save-bitbucket-provider' + - depth: 2 + title: Application save Gitea Provider + url: '#application-save-gitea-provider' - depth: 2 title: Application save Docker Provider url: '#application-save-docker-provider' - depth: 2 - title: Application save Git Prodiver - url: '#application-save-git-prodiver' + title: Application save Git Provider + url: '#application-save-git-provider' + - depth: 2 + title: Application disconnect Git Provider + url: '#application-disconnect-git-provider' - depth: 2 title: Application mark Running url: '#application-mark-running' @@ -60,6 +66,9 @@ _openapi: - depth: 2 title: Application clean Queues url: '#application-clean-queues' + - depth: 2 + title: Application kill Build + url: '#application-kill-build' - depth: 2 title: Application read Traefik Config url: '#application-read-traefik-config' @@ -69,6 +78,12 @@ _openapi: - depth: 2 title: Application read App Monitoring url: '#application-read-app-monitoring' + - depth: 2 + title: Application move + url: '#application-move' + - depth: 2 + title: Application cancel Deployment + url: '#application-cancel-deployment' structuredData: headings: - content: Application create @@ -95,10 +110,14 @@ _openapi: id: application-save-gitlab-provider - content: Application save Bitbucket Provider id: application-save-bitbucket-provider + - content: Application save Gitea Provider + id: application-save-gitea-provider - content: Application save Docker Provider id: application-save-docker-provider - - content: Application save Git Prodiver - id: application-save-git-prodiver + - content: Application save Git Provider + id: application-save-git-provider + - content: Application disconnect Git Provider + id: application-disconnect-git-provider - content: Application mark Running id: application-mark-running - content: Application update @@ -109,13 +128,19 @@ _openapi: id: application-deploy - content: Application clean Queues id: application-clean-queues + - content: Application kill Build + id: application-kill-build - content: Application read Traefik Config id: application-read-traefik-config - content: Application update Traefik Config id: application-update-traefik-config - content: Application read App Monitoring id: application-read-app-monitoring + - content: Application move + id: application-move + - content: Application cancel Deployment + id: application-cancel-deployment contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-auth.mdx b/apps/docs/content/docs/api/generated/reference-auth.mdx deleted file mode 100644 index ebf1cbb..0000000 --- a/apps/docs/content/docs/api/generated/reference-auth.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Auth -full: true -_openapi: - toc: - - depth: 2 - title: Auth create Admin - url: '#auth-create-admin' - - depth: 2 - title: Auth create User - url: '#auth-create-user' - - depth: 2 - title: Auth login - url: '#auth-login' - - depth: 2 - title: Auth get - url: '#auth-get' - - depth: 2 - title: Auth logout - url: '#auth-logout' - - depth: 2 - title: Auth update - url: '#auth-update' - - depth: 2 - title: Auth generate Token - url: '#auth-generate-token' - - depth: 2 - title: Auth one - url: '#auth-one' - - depth: 2 - title: Auth generate2 F A Secret - url: '#auth-generate2-f-a-secret' - - depth: 2 - title: Auth verify2 F A Setup - url: '#auth-verify2-f-a-setup' - - depth: 2 - title: Auth verify Login2 F A - url: '#auth-verify-login2-f-a' - - depth: 2 - title: Auth disable2 F A - url: '#auth-disable2-f-a' - - depth: 2 - title: Auth send Reset Password Email - url: '#auth-send-reset-password-email' - - depth: 2 - title: Auth reset Password - url: '#auth-reset-password' - - depth: 2 - title: Auth confirm Email - url: '#auth-confirm-email' - structuredData: - headings: - - content: Auth create Admin - id: auth-create-admin - - content: Auth create User - id: auth-create-user - - content: Auth login - id: auth-login - - content: Auth get - id: auth-get - - content: Auth logout - id: auth-logout - - content: Auth update - id: auth-update - - content: Auth generate Token - id: auth-generate-token - - content: Auth one - id: auth-one - - content: Auth generate2 F A Secret - id: auth-generate2-f-a-secret - - content: Auth verify2 F A Setup - id: auth-verify2-f-a-setup - - content: Auth verify Login2 F A - id: auth-verify-login2-f-a - - content: Auth disable2 F A - id: auth-disable2-f-a - - content: Auth send Reset Password Email - id: auth-send-reset-password-email - - content: Auth reset Password - id: auth-reset-password - - content: Auth confirm Email - id: auth-confirm-email - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-backup.mdx b/apps/docs/content/docs/api/generated/reference-backup.mdx index 5053281..540e858 100644 --- a/apps/docs/content/docs/api/generated/reference-backup.mdx +++ b/apps/docs/content/docs/api/generated/reference-backup.mdx @@ -24,9 +24,18 @@ _openapi: - depth: 2 title: Backup manual Backup Mariadb url: '#backup-manual-backup-mariadb' + - depth: 2 + title: Backup manual Backup Compose + url: '#backup-manual-backup-compose' - depth: 2 title: Backup manual Backup Mongo url: '#backup-manual-backup-mongo' + - depth: 2 + title: Backup manual Backup Web Server + url: '#backup-manual-backup-web-server' + - depth: 2 + title: Backup list Backup Files + url: '#backup-list-backup-files' structuredData: headings: - content: Backup create @@ -43,9 +52,15 @@ _openapi: id: backup-manual-backup-my-sql - content: Backup manual Backup Mariadb id: backup-manual-backup-mariadb + - content: Backup manual Backup Compose + id: backup-manual-backup-compose - content: Backup manual Backup Mongo id: backup-manual-backup-mongo + - content: Backup manual Backup Web Server + id: backup-manual-backup-web-server + - content: Backup list Backup Files + id: backup-list-backup-files contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-bitbucket.mdx b/apps/docs/content/docs/api/generated/reference-bitbucket.mdx index b8ca554..32c1edf 100644 --- a/apps/docs/content/docs/api/generated/reference-bitbucket.mdx +++ b/apps/docs/content/docs/api/generated/reference-bitbucket.mdx @@ -43,4 +43,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-certificates.mdx b/apps/docs/content/docs/api/generated/reference-certificates.mdx index 86000d0..b0b51b9 100644 --- a/apps/docs/content/docs/api/generated/reference-certificates.mdx +++ b/apps/docs/content/docs/api/generated/reference-certificates.mdx @@ -28,4 +28,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-cluster.mdx b/apps/docs/content/docs/api/generated/reference-cluster.mdx index 6a8f92d..8729864 100644 --- a/apps/docs/content/docs/api/generated/reference-cluster.mdx +++ b/apps/docs/content/docs/api/generated/reference-cluster.mdx @@ -28,4 +28,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-compose.mdx b/apps/docs/content/docs/api/generated/reference-compose.mdx index 0fb7849..fdf7512 100644 --- a/apps/docs/content/docs/api/generated/reference-compose.mdx +++ b/apps/docs/content/docs/api/generated/reference-compose.mdx @@ -18,15 +18,24 @@ _openapi: - depth: 2 title: Compose clean Queues url: '#compose-clean-queues' + - depth: 2 + title: Compose kill Build + url: '#compose-kill-build' - depth: 2 title: Compose load Services url: '#compose-load-services' + - depth: 2 + title: Compose load Mounts By Service + url: '#compose-load-mounts-by-service' - depth: 2 title: Compose fetch Source Type url: '#compose-fetch-source-type' - depth: 2 title: Compose randomize Compose url: '#compose-randomize-compose' + - depth: 2 + title: Compose isolated Deployment + url: '#compose-isolated-deployment' - depth: 2 title: Compose get Converted Compose url: '#compose-get-converted-compose' @@ -39,6 +48,9 @@ _openapi: - depth: 2 title: Compose stop url: '#compose-stop' + - depth: 2 + title: Compose start + url: '#compose-start' - depth: 2 title: Compose get Default Command url: '#compose-get-default-command' @@ -54,6 +66,21 @@ _openapi: - depth: 2 title: Compose get Tags url: '#compose-get-tags' + - depth: 2 + title: Compose disconnect Git Provider + url: '#compose-disconnect-git-provider' + - depth: 2 + title: Compose move + url: '#compose-move' + - depth: 2 + title: Compose process Template + url: '#compose-process-template' + - depth: 2 + title: Compose import + url: '#compose-import' + - depth: 2 + title: Compose cancel Deployment + url: '#compose-cancel-deployment' structuredData: headings: - content: Compose create @@ -66,12 +93,18 @@ _openapi: id: compose-delete - content: Compose clean Queues id: compose-clean-queues + - content: Compose kill Build + id: compose-kill-build - content: Compose load Services id: compose-load-services + - content: Compose load Mounts By Service + id: compose-load-mounts-by-service - content: Compose fetch Source Type id: compose-fetch-source-type - content: Compose randomize Compose id: compose-randomize-compose + - content: Compose isolated Deployment + id: compose-isolated-deployment - content: Compose get Converted Compose id: compose-get-converted-compose - content: Compose deploy @@ -80,6 +113,8 @@ _openapi: id: compose-redeploy - content: Compose stop id: compose-stop + - content: Compose start + id: compose-start - content: Compose get Default Command id: compose-get-default-command - content: Compose refresh Token @@ -90,7 +125,17 @@ _openapi: id: compose-templates - content: Compose get Tags id: compose-get-tags + - content: Compose disconnect Git Provider + id: compose-disconnect-git-provider + - content: Compose move + id: compose-move + - content: Compose process Template + id: compose-process-template + - content: Compose import + id: compose-import + - content: Compose cancel Deployment + id: compose-cancel-deployment contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-deployment.mdx b/apps/docs/content/docs/api/generated/reference-deployment.mdx index 3489956..2dd54f9 100644 --- a/apps/docs/content/docs/api/generated/reference-deployment.mdx +++ b/apps/docs/content/docs/api/generated/reference-deployment.mdx @@ -12,6 +12,12 @@ _openapi: - depth: 2 title: Deployment all By Server url: '#deployment-all-by-server' + - depth: 2 + title: Deployment all By Type + url: '#deployment-all-by-type' + - depth: 2 + title: Deployment kill Process + url: '#deployment-kill-process' structuredData: headings: - content: Deployment all @@ -20,7 +26,11 @@ _openapi: id: deployment-all-by-compose - content: Deployment all By Server id: deployment-all-by-server + - content: Deployment all By Type + id: deployment-all-by-type + - content: Deployment kill Process + id: deployment-kill-process contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-destination.mdx b/apps/docs/content/docs/api/generated/reference-destination.mdx index 1a1bc82..7427ec0 100644 --- a/apps/docs/content/docs/api/generated/reference-destination.mdx +++ b/apps/docs/content/docs/api/generated/reference-destination.mdx @@ -38,4 +38,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-docker.mdx b/apps/docs/content/docs/api/generated/reference-docker.mdx index 272c250..48e78e0 100644 --- a/apps/docs/content/docs/api/generated/reference-docker.mdx +++ b/apps/docs/content/docs/api/generated/reference-docker.mdx @@ -18,6 +18,12 @@ _openapi: - depth: 2 title: Docker get Containers By App Label url: '#docker-get-containers-by-app-label' + - depth: 2 + title: Docker get Stack Containers By App Name + url: '#docker-get-stack-containers-by-app-name' + - depth: 2 + title: Docker get Service Containers By App Name + url: '#docker-get-service-containers-by-app-name' structuredData: headings: - content: Docker get Containers @@ -30,7 +36,11 @@ _openapi: id: docker-get-containers-by-app-name-match - content: Docker get Containers By App Label id: docker-get-containers-by-app-label + - content: Docker get Stack Containers By App Name + id: docker-get-stack-containers-by-app-name + - content: Docker get Service Containers By App Name + id: docker-get-service-containers-by-app-name contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-domain.mdx b/apps/docs/content/docs/api/generated/reference-domain.mdx index 9fd844e..ebe4b20 100644 --- a/apps/docs/content/docs/api/generated/reference-domain.mdx +++ b/apps/docs/content/docs/api/generated/reference-domain.mdx @@ -15,6 +15,9 @@ _openapi: - depth: 2 title: Domain generate Domain url: '#domain-generate-domain' + - depth: 2 + title: Domain can Generate Traefik Me Domains + url: '#domain-can-generate-traefik-me-domains' - depth: 2 title: Domain update url: '#domain-update' @@ -24,6 +27,9 @@ _openapi: - depth: 2 title: Domain delete url: '#domain-delete' + - depth: 2 + title: Domain validate Domain + url: '#domain-validate-domain' structuredData: headings: - content: Domain create @@ -34,13 +40,17 @@ _openapi: id: domain-by-compose-id - content: Domain generate Domain id: domain-generate-domain + - content: Domain can Generate Traefik Me Domains + id: domain-can-generate-traefik-me-domains - content: Domain update id: domain-update - content: Domain one id: domain-one - content: Domain delete id: domain-delete + - content: Domain validate Domain + id: domain-validate-domain contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-environment.mdx b/apps/docs/content/docs/api/generated/reference-environment.mdx new file mode 100644 index 0000000..49cc235 --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-environment.mdx @@ -0,0 +1,41 @@ +--- +title: Environment +full: true +_openapi: + toc: + - depth: 2 + title: Environment create + url: '#environment-create' + - depth: 2 + title: Environment one + url: '#environment-one' + - depth: 2 + title: Environment by Project Id + url: '#environment-by-project-id' + - depth: 2 + title: Environment remove + url: '#environment-remove' + - depth: 2 + title: Environment update + url: '#environment-update' + - depth: 2 + title: Environment duplicate + url: '#environment-duplicate' + structuredData: + headings: + - content: Environment create + id: environment-create + - content: Environment one + id: environment-one + - content: Environment by Project Id + id: environment-by-project-id + - content: Environment remove + id: environment-remove + - content: Environment update + id: environment-update + - content: Environment duplicate + id: environment-duplicate + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-gitProvider.mdx b/apps/docs/content/docs/api/generated/reference-gitProvider.mdx index 5e0266c..00eeb7c 100644 --- a/apps/docs/content/docs/api/generated/reference-gitProvider.mdx +++ b/apps/docs/content/docs/api/generated/reference-gitProvider.mdx @@ -18,4 +18,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-gitea.mdx b/apps/docs/content/docs/api/generated/reference-gitea.mdx new file mode 100644 index 0000000..287fb5c --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-gitea.mdx @@ -0,0 +1,51 @@ +--- +title: Gitea +full: true +_openapi: + toc: + - depth: 2 + title: Gitea create + url: '#gitea-create' + - depth: 2 + title: Gitea one + url: '#gitea-one' + - depth: 2 + title: Gitea gitea Providers + url: '#gitea-gitea-providers' + - depth: 2 + title: Gitea get Gitea Repositories + url: '#gitea-get-gitea-repositories' + - depth: 2 + title: Gitea get Gitea Branches + url: '#gitea-get-gitea-branches' + - depth: 2 + title: Gitea test Connection + url: '#gitea-test-connection' + - depth: 2 + title: Gitea update + url: '#gitea-update' + - depth: 2 + title: Gitea get Gitea Url + url: '#gitea-get-gitea-url' + structuredData: + headings: + - content: Gitea create + id: gitea-create + - content: Gitea one + id: gitea-one + - content: Gitea gitea Providers + id: gitea-gitea-providers + - content: Gitea get Gitea Repositories + id: gitea-get-gitea-repositories + - content: Gitea get Gitea Branches + id: gitea-get-gitea-branches + - content: Gitea test Connection + id: gitea-test-connection + - content: Gitea update + id: gitea-update + - content: Gitea get Gitea Url + id: gitea-get-gitea-url + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-github.mdx b/apps/docs/content/docs/api/generated/reference-github.mdx index 850f594..29b3a5d 100644 --- a/apps/docs/content/docs/api/generated/reference-github.mdx +++ b/apps/docs/content/docs/api/generated/reference-github.mdx @@ -38,4 +38,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-gitlab.mdx b/apps/docs/content/docs/api/generated/reference-gitlab.mdx index 4aac6a1..573f241 100644 --- a/apps/docs/content/docs/api/generated/reference-gitlab.mdx +++ b/apps/docs/content/docs/api/generated/reference-gitlab.mdx @@ -43,4 +43,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-mariadb.mdx b/apps/docs/content/docs/api/generated/reference-mariadb.mdx index f656f00..f92dc57 100644 --- a/apps/docs/content/docs/api/generated/reference-mariadb.mdx +++ b/apps/docs/content/docs/api/generated/reference-mariadb.mdx @@ -36,6 +36,12 @@ _openapi: - depth: 2 title: Mariadb update url: '#mariadb-update' + - depth: 2 + title: Mariadb move + url: '#mariadb-move' + - depth: 2 + title: Mariadb rebuild + url: '#mariadb-rebuild' structuredData: headings: - content: Mariadb create @@ -60,7 +66,11 @@ _openapi: id: mariadb-reload - content: Mariadb update id: mariadb-update + - content: Mariadb move + id: mariadb-move + - content: Mariadb rebuild + id: mariadb-rebuild contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-mongo.mdx b/apps/docs/content/docs/api/generated/reference-mongo.mdx index 418362e..334acd9 100644 --- a/apps/docs/content/docs/api/generated/reference-mongo.mdx +++ b/apps/docs/content/docs/api/generated/reference-mongo.mdx @@ -36,6 +36,12 @@ _openapi: - depth: 2 title: Mongo update url: '#mongo-update' + - depth: 2 + title: Mongo move + url: '#mongo-move' + - depth: 2 + title: Mongo rebuild + url: '#mongo-rebuild' structuredData: headings: - content: Mongo create @@ -60,7 +66,11 @@ _openapi: id: mongo-save-environment - content: Mongo update id: mongo-update + - content: Mongo move + id: mongo-move + - content: Mongo rebuild + id: mongo-rebuild contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-mounts.mdx b/apps/docs/content/docs/api/generated/reference-mounts.mdx index f014d77..8082955 100644 --- a/apps/docs/content/docs/api/generated/reference-mounts.mdx +++ b/apps/docs/content/docs/api/generated/reference-mounts.mdx @@ -15,6 +15,9 @@ _openapi: - depth: 2 title: Mounts update url: '#mounts-update' + - depth: 2 + title: Mounts all Named By Application Id + url: '#mounts-all-named-by-application-id' structuredData: headings: - content: Mounts create @@ -25,7 +28,9 @@ _openapi: id: mounts-one - content: Mounts update id: mounts-update + - content: Mounts all Named By Application Id + id: mounts-all-named-by-application-id contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-mysql.mdx b/apps/docs/content/docs/api/generated/reference-mysql.mdx index 8a0df9e..aeb72ac 100644 --- a/apps/docs/content/docs/api/generated/reference-mysql.mdx +++ b/apps/docs/content/docs/api/generated/reference-mysql.mdx @@ -36,6 +36,12 @@ _openapi: - depth: 2 title: Mysql update url: '#mysql-update' + - depth: 2 + title: Mysql move + url: '#mysql-move' + - depth: 2 + title: Mysql rebuild + url: '#mysql-rebuild' structuredData: headings: - content: Mysql create @@ -60,7 +66,11 @@ _openapi: id: mysql-save-environment - content: Mysql update id: mysql-update + - content: Mysql move + id: mysql-move + - content: Mysql rebuild + id: mysql-rebuild contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-notification.mdx b/apps/docs/content/docs/api/generated/reference-notification.mdx index ef65dad..d7901b2 100644 --- a/apps/docs/content/docs/api/generated/reference-notification.mdx +++ b/apps/docs/content/docs/api/generated/reference-notification.mdx @@ -48,6 +48,39 @@ _openapi: - depth: 2 title: Notification all url: '#notification-all' + - depth: 2 + title: Notification receive Notification + url: '#notification-receive-notification' + - depth: 2 + title: Notification create Gotify + url: '#notification-create-gotify' + - depth: 2 + title: Notification update Gotify + url: '#notification-update-gotify' + - depth: 2 + title: Notification test Gotify Connection + url: '#notification-test-gotify-connection' + - depth: 2 + title: Notification create Ntfy + url: '#notification-create-ntfy' + - depth: 2 + title: Notification update Ntfy + url: '#notification-update-ntfy' + - depth: 2 + title: Notification test Ntfy Connection + url: '#notification-test-ntfy-connection' + - depth: 2 + title: Notification create Lark + url: '#notification-create-lark' + - depth: 2 + title: Notification update Lark + url: '#notification-update-lark' + - depth: 2 + title: Notification test Lark Connection + url: '#notification-test-lark-connection' + - depth: 2 + title: Notification get Email Providers + url: '#notification-get-email-providers' structuredData: headings: - content: Notification create Slack @@ -80,7 +113,29 @@ _openapi: id: notification-one - content: Notification all id: notification-all + - content: Notification receive Notification + id: notification-receive-notification + - content: Notification create Gotify + id: notification-create-gotify + - content: Notification update Gotify + id: notification-update-gotify + - content: Notification test Gotify Connection + id: notification-test-gotify-connection + - content: Notification create Ntfy + id: notification-create-ntfy + - content: Notification update Ntfy + id: notification-update-ntfy + - content: Notification test Ntfy Connection + id: notification-test-ntfy-connection + - content: Notification create Lark + id: notification-create-lark + - content: Notification update Lark + id: notification-update-lark + - content: Notification test Lark Connection + id: notification-test-lark-connection + - content: Notification get Email Providers + id: notification-get-email-providers contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-organization.mdx b/apps/docs/content/docs/api/generated/reference-organization.mdx new file mode 100644 index 0000000..6ca7904 --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-organization.mdx @@ -0,0 +1,51 @@ +--- +title: Organization +full: true +_openapi: + toc: + - depth: 2 + title: Organization create + url: '#organization-create' + - depth: 2 + title: Organization all + url: '#organization-all' + - depth: 2 + title: Organization one + url: '#organization-one' + - depth: 2 + title: Organization update + url: '#organization-update' + - depth: 2 + title: Organization delete + url: '#organization-delete' + - depth: 2 + title: Organization all Invitations + url: '#organization-all-invitations' + - depth: 2 + title: Organization remove Invitation + url: '#organization-remove-invitation' + - depth: 2 + title: Organization set Default + url: '#organization-set-default' + structuredData: + headings: + - content: Organization create + id: organization-create + - content: Organization all + id: organization-all + - content: Organization one + id: organization-one + - content: Organization update + id: organization-update + - content: Organization delete + id: organization-delete + - content: Organization all Invitations + id: organization-all-invitations + - content: Organization remove Invitation + id: organization-remove-invitation + - content: Organization set Default + id: organization-set-default + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-port.mdx b/apps/docs/content/docs/api/generated/reference-port.mdx index cf6f2e0..3b96040 100644 --- a/apps/docs/content/docs/api/generated/reference-port.mdx +++ b/apps/docs/content/docs/api/generated/reference-port.mdx @@ -28,4 +28,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-postgres.mdx b/apps/docs/content/docs/api/generated/reference-postgres.mdx index c1e6e1c..983f588 100644 --- a/apps/docs/content/docs/api/generated/reference-postgres.mdx +++ b/apps/docs/content/docs/api/generated/reference-postgres.mdx @@ -36,6 +36,12 @@ _openapi: - depth: 2 title: Postgres update url: '#postgres-update' + - depth: 2 + title: Postgres move + url: '#postgres-move' + - depth: 2 + title: Postgres rebuild + url: '#postgres-rebuild' structuredData: headings: - content: Postgres create @@ -60,7 +66,11 @@ _openapi: id: postgres-reload - content: Postgres update id: postgres-update + - content: Postgres move + id: postgres-move + - content: Postgres rebuild + id: postgres-rebuild contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-previewDeployment.mdx b/apps/docs/content/docs/api/generated/reference-previewDeployment.mdx new file mode 100644 index 0000000..c4dd088 --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-previewDeployment.mdx @@ -0,0 +1,26 @@ +--- +title: Preview Deployment +full: true +_openapi: + toc: + - depth: 2 + title: Preview Deployment all + url: '#preview-deployment-all' + - depth: 2 + title: Preview Deployment delete + url: '#preview-deployment-delete' + - depth: 2 + title: Preview Deployment one + url: '#preview-deployment-one' + structuredData: + headings: + - content: Preview Deployment all + id: preview-deployment-all + - content: Preview Deployment delete + id: preview-deployment-delete + - content: Preview Deployment one + id: preview-deployment-one + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-project.mdx b/apps/docs/content/docs/api/generated/reference-project.mdx index afde77f..86167e5 100644 --- a/apps/docs/content/docs/api/generated/reference-project.mdx +++ b/apps/docs/content/docs/api/generated/reference-project.mdx @@ -18,6 +18,9 @@ _openapi: - depth: 2 title: Project update url: '#project-update' + - depth: 2 + title: Project duplicate + url: '#project-duplicate' structuredData: headings: - content: Project create @@ -30,7 +33,9 @@ _openapi: id: project-remove - content: Project update id: project-update + - content: Project duplicate + id: project-duplicate contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-redirects.mdx b/apps/docs/content/docs/api/generated/reference-redirects.mdx index fac4dad..7797dbb 100644 --- a/apps/docs/content/docs/api/generated/reference-redirects.mdx +++ b/apps/docs/content/docs/api/generated/reference-redirects.mdx @@ -28,4 +28,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-redis.mdx b/apps/docs/content/docs/api/generated/reference-redis.mdx index 1ad55a5..0529270 100644 --- a/apps/docs/content/docs/api/generated/reference-redis.mdx +++ b/apps/docs/content/docs/api/generated/reference-redis.mdx @@ -36,6 +36,12 @@ _openapi: - depth: 2 title: Redis update url: '#redis-update' + - depth: 2 + title: Redis move + url: '#redis-move' + - depth: 2 + title: Redis rebuild + url: '#redis-rebuild' structuredData: headings: - content: Redis create @@ -60,7 +66,11 @@ _openapi: id: redis-save-environment - content: Redis update id: redis-update + - content: Redis move + id: redis-move + - content: Redis rebuild + id: redis-rebuild contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-registry.mdx b/apps/docs/content/docs/api/generated/reference-registry.mdx index 1b15d67..8ee38a4 100644 --- a/apps/docs/content/docs/api/generated/reference-registry.mdx +++ b/apps/docs/content/docs/api/generated/reference-registry.mdx @@ -38,4 +38,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-rollback.mdx b/apps/docs/content/docs/api/generated/reference-rollback.mdx new file mode 100644 index 0000000..8b31b5b --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-rollback.mdx @@ -0,0 +1,21 @@ +--- +title: Rollback +full: true +_openapi: + toc: + - depth: 2 + title: Rollback delete + url: '#rollback-delete' + - depth: 2 + title: Rollback rollback + url: '#rollback-rollback' + structuredData: + headings: + - content: Rollback delete + id: rollback-delete + - content: Rollback rollback + id: rollback-rollback + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-schedule.mdx b/apps/docs/content/docs/api/generated/reference-schedule.mdx new file mode 100644 index 0000000..32d5e85 --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-schedule.mdx @@ -0,0 +1,41 @@ +--- +title: Schedule +full: true +_openapi: + toc: + - depth: 2 + title: Schedule create + url: '#schedule-create' + - depth: 2 + title: Schedule update + url: '#schedule-update' + - depth: 2 + title: Schedule delete + url: '#schedule-delete' + - depth: 2 + title: Schedule list + url: '#schedule-list' + - depth: 2 + title: Schedule one + url: '#schedule-one' + - depth: 2 + title: Schedule run Manually + url: '#schedule-run-manually' + structuredData: + headings: + - content: Schedule create + id: schedule-create + - content: Schedule update + id: schedule-update + - content: Schedule delete + id: schedule-delete + - content: Schedule list + id: schedule-list + - content: Schedule one + id: schedule-one + - content: Schedule run Manually + id: schedule-run-manually + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-security.mdx b/apps/docs/content/docs/api/generated/reference-security.mdx index 9ddf724..8cd948e 100644 --- a/apps/docs/content/docs/api/generated/reference-security.mdx +++ b/apps/docs/content/docs/api/generated/reference-security.mdx @@ -28,4 +28,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-server.mdx b/apps/docs/content/docs/api/generated/reference-server.mdx index 7914637..3b2d59c 100644 --- a/apps/docs/content/docs/api/generated/reference-server.mdx +++ b/apps/docs/content/docs/api/generated/reference-server.mdx @@ -9,38 +9,83 @@ _openapi: - depth: 2 title: Server one url: '#server-one' + - depth: 2 + title: Server get Default Command + url: '#server-get-default-command' - depth: 2 title: Server all url: '#server-all' + - depth: 2 + title: Server count + url: '#server-count' - depth: 2 title: Server with S S H Key url: '#server-with-s-s-h-key' + - depth: 2 + title: Server build Servers + url: '#server-build-servers' - depth: 2 title: Server setup url: '#server-setup' + - depth: 2 + title: Server validate + url: '#server-validate' + - depth: 2 + title: Server security + url: '#server-security' + - depth: 2 + title: Server setup Monitoring + url: '#server-setup-monitoring' - depth: 2 title: Server remove url: '#server-remove' - depth: 2 title: Server update url: '#server-update' + - depth: 2 + title: Server public Ip + url: '#server-public-ip' + - depth: 2 + title: Server get Server Time + url: '#server-get-server-time' + - depth: 2 + title: Server get Server Metrics + url: '#server-get-server-metrics' structuredData: headings: - content: Server create id: server-create - content: Server one id: server-one + - content: Server get Default Command + id: server-get-default-command - content: Server all id: server-all + - content: Server count + id: server-count - content: Server with S S H Key id: server-with-s-s-h-key + - content: Server build Servers + id: server-build-servers - content: Server setup id: server-setup + - content: Server validate + id: server-validate + - content: Server security + id: server-security + - content: Server setup Monitoring + id: server-setup-monitoring - content: Server remove id: server-remove - content: Server update id: server-update + - content: Server public Ip + id: server-public-ip + - content: Server get Server Time + id: server-get-server-time + - content: Server get Server Metrics + id: server-get-server-metrics contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-settings.mdx b/apps/docs/content/docs/api/generated/reference-settings.mdx index b66f4b4..9f8e4ba 100644 --- a/apps/docs/content/docs/api/generated/reference-settings.mdx +++ b/apps/docs/content/docs/api/generated/reference-settings.mdx @@ -6,6 +6,12 @@ _openapi: - depth: 2 title: Settings reload Server url: '#settings-reload-server' + - depth: 2 + title: Settings clean Redis + url: '#settings-clean-redis' + - depth: 2 + title: Settings reload Redis + url: '#settings-reload-redis' - depth: 2 title: Settings reload Traefik url: '#settings-reload-traefik' @@ -64,14 +70,17 @@ _openapi: title: Settings update Middleware Traefik Config url: '#settings-update-middleware-traefik-config' - depth: 2 - title: Settings check And Update Image - url: '#settings-check-and-update-image' + title: Settings get Update Data + url: '#settings-get-update-data' - depth: 2 title: Settings update Server url: '#settings-update-server' - depth: 2 title: Settings get Dokploy Version url: '#settings-get-dokploy-version' + - depth: 2 + title: Settings get Release Tag + url: '#settings-get-release-tag' - depth: 2 title: Settings read Directories url: '#settings-read-directories' @@ -96,15 +105,6 @@ _openapi: - depth: 2 title: Settings have Traefik Dashboard Port Enabled url: '#settings-have-traefik-dashboard-port-enabled' - - depth: 2 - title: Settings read Stats - url: '#settings-read-stats' - - depth: 2 - title: Settings get Log Rotate Status - url: '#settings-get-log-rotate-status' - - depth: 2 - title: Settings toggle Log Rotate - url: '#settings-toggle-log-rotate' - depth: 2 title: Settings have Activate Requests url: '#settings-have-activate-requests' @@ -114,13 +114,41 @@ _openapi: - depth: 2 title: Settings is Cloud url: '#settings-is-cloud' + - depth: 2 + title: Settings is User Subscribed + url: '#settings-is-user-subscribed' - depth: 2 title: Settings health url: '#settings-health' + - depth: 2 + title: Settings setup G P U + url: '#settings-setup-g-p-u' + - depth: 2 + title: Settings check G P U Status + url: '#settings-check-g-p-u-status' + - depth: 2 + title: Settings update Traefik Ports + url: '#settings-update-traefik-ports' + - depth: 2 + title: Settings get Traefik Ports + url: '#settings-get-traefik-ports' + - depth: 2 + title: Settings update Log Cleanup + url: '#settings-update-log-cleanup' + - depth: 2 + title: Settings get Log Cleanup Status + url: '#settings-get-log-cleanup-status' + - depth: 2 + title: Settings get Dokploy Cloud Ips + url: '#settings-get-dokploy-cloud-ips' structuredData: headings: - content: Settings reload Server id: settings-reload-server + - content: Settings clean Redis + id: settings-clean-redis + - content: Settings reload Redis + id: settings-reload-redis - content: Settings reload Traefik id: settings-reload-traefik - content: Settings toggle Dashboard @@ -159,12 +187,14 @@ _openapi: id: settings-read-middleware-traefik-config - content: Settings update Middleware Traefik Config id: settings-update-middleware-traefik-config - - content: Settings check And Update Image - id: settings-check-and-update-image + - content: Settings get Update Data + id: settings-get-update-data - content: Settings update Server id: settings-update-server - content: Settings get Dokploy Version id: settings-get-dokploy-version + - content: Settings get Release Tag + id: settings-get-release-tag - content: Settings read Directories id: settings-read-directories - content: Settings update Traefik File @@ -181,21 +211,31 @@ _openapi: id: settings-write-traefik-env - content: Settings have Traefik Dashboard Port Enabled id: settings-have-traefik-dashboard-port-enabled - - content: Settings read Stats - id: settings-read-stats - - content: Settings get Log Rotate Status - id: settings-get-log-rotate-status - - content: Settings toggle Log Rotate - id: settings-toggle-log-rotate - content: Settings have Activate Requests id: settings-have-activate-requests - content: Settings toggle Requests id: settings-toggle-requests - content: Settings is Cloud id: settings-is-cloud + - content: Settings is User Subscribed + id: settings-is-user-subscribed - content: Settings health id: settings-health + - content: Settings setup G P U + id: settings-setup-g-p-u + - content: Settings check G P U Status + id: settings-check-g-p-u-status + - content: Settings update Traefik Ports + id: settings-update-traefik-ports + - content: Settings get Traefik Ports + id: settings-get-traefik-ports + - content: Settings update Log Cleanup + id: settings-update-log-cleanup + - content: Settings get Log Cleanup Status + id: settings-get-log-cleanup-status + - content: Settings get Dokploy Cloud Ips + id: settings-get-dokploy-cloud-ips contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-sshKey.mdx b/apps/docs/content/docs/api/generated/reference-sshKey.mdx index c8a8bde..5b6c17b 100644 --- a/apps/docs/content/docs/api/generated/reference-sshKey.mdx +++ b/apps/docs/content/docs/api/generated/reference-sshKey.mdx @@ -38,4 +38,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-stripe.mdx b/apps/docs/content/docs/api/generated/reference-stripe.mdx index e530c0a..cae965b 100644 --- a/apps/docs/content/docs/api/generated/reference-stripe.mdx +++ b/apps/docs/content/docs/api/generated/reference-stripe.mdx @@ -28,4 +28,4 @@ _openapi: contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-swarm.mdx b/apps/docs/content/docs/api/generated/reference-swarm.mdx new file mode 100644 index 0000000..9d8d65c --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-swarm.mdx @@ -0,0 +1,26 @@ +--- +title: Swarm +full: true +_openapi: + toc: + - depth: 2 + title: Swarm get Nodes + url: '#swarm-get-nodes' + - depth: 2 + title: Swarm get Node Info + url: '#swarm-get-node-info' + - depth: 2 + title: Swarm get Node Apps + url: '#swarm-get-node-apps' + structuredData: + headings: + - content: Swarm get Nodes + id: swarm-get-nodes + - content: Swarm get Node Info + id: swarm-get-node-info + - content: Swarm get Node Apps + id: swarm-get-node-apps + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-user.mdx b/apps/docs/content/docs/api/generated/reference-user.mdx index 2984521..8acecac 100644 --- a/apps/docs/content/docs/api/generated/reference-user.mdx +++ b/apps/docs/content/docs/api/generated/reference-user.mdx @@ -7,20 +7,95 @@ _openapi: title: User all url: '#user-all' - depth: 2 - title: User by Auth Id - url: '#user-by-auth-id' + title: User one + url: '#user-one' - depth: 2 - title: User by User Id - url: '#user-by-user-id' + title: User get + url: '#user-get' + - depth: 2 + title: User have Root Access + url: '#user-have-root-access' + - depth: 2 + title: User get Backups + url: '#user-get-backups' + - depth: 2 + title: User get Server Metrics + url: '#user-get-server-metrics' + - depth: 2 + title: User update + url: '#user-update' + - depth: 2 + title: User get User By Token + url: '#user-get-user-by-token' + - depth: 2 + title: User get Metrics Token + url: '#user-get-metrics-token' + - depth: 2 + title: User remove + url: '#user-remove' + - depth: 2 + title: User assign Permissions + url: '#user-assign-permissions' + - depth: 2 + title: User get Invitations + url: '#user-get-invitations' + - depth: 2 + title: User get Container Metrics + url: '#user-get-container-metrics' + - depth: 2 + title: User generate Token + url: '#user-generate-token' + - depth: 2 + title: User delete Api Key + url: '#user-delete-api-key' + - depth: 2 + title: User create Api Key + url: '#user-create-api-key' + - depth: 2 + title: User check User Organizations + url: '#user-check-user-organizations' + - depth: 2 + title: User send Invitation + url: '#user-send-invitation' structuredData: headings: - content: User all id: user-all - - content: User by Auth Id - id: user-by-auth-id - - content: User by User Id - id: user-by-user-id + - content: User one + id: user-one + - content: User get + id: user-get + - content: User have Root Access + id: user-have-root-access + - content: User get Backups + id: user-get-backups + - content: User get Server Metrics + id: user-get-server-metrics + - content: User update + id: user-update + - content: User get User By Token + id: user-get-user-by-token + - content: User get Metrics Token + id: user-get-metrics-token + - content: User remove + id: user-remove + - content: User assign Permissions + id: user-assign-permissions + - content: User get Invitations + id: user-get-invitations + - content: User get Container Metrics + id: user-get-container-metrics + - content: User generate Token + id: user-generate-token + - content: User delete Api Key + id: user-delete-api-key + - content: User create Api Key + id: user-create-api-key + - content: User check User Organizations + id: user-check-user-organizations + - content: User send Invitation + id: user-send-invitation contents: [] --- - \ No newline at end of file + \ No newline at end of file diff --git a/apps/docs/content/docs/api/generated/reference-volumeBackups.mdx b/apps/docs/content/docs/api/generated/reference-volumeBackups.mdx new file mode 100644 index 0000000..23972f6 --- /dev/null +++ b/apps/docs/content/docs/api/generated/reference-volumeBackups.mdx @@ -0,0 +1,41 @@ +--- +title: Volume Backups +full: true +_openapi: + toc: + - depth: 2 + title: Volume Backups list + url: '#volume-backups-list' + - depth: 2 + title: Volume Backups create + url: '#volume-backups-create' + - depth: 2 + title: Volume Backups one + url: '#volume-backups-one' + - depth: 2 + title: Volume Backups delete + url: '#volume-backups-delete' + - depth: 2 + title: Volume Backups update + url: '#volume-backups-update' + - depth: 2 + title: Volume Backups run Manually + url: '#volume-backups-run-manually' + structuredData: + headings: + - content: Volume Backups list + id: volume-backups-list + - content: Volume Backups create + id: volume-backups-create + - content: Volume Backups one + id: volume-backups-one + - content: Volume Backups delete + id: volume-backups-delete + - content: Volume Backups update + id: volume-backups-update + - content: Volume Backups run Manually + id: volume-backups-run-manually + contents: [] +--- + + \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-admin.mdx b/apps/docs/content/docs/api/reference-admin.mdx deleted file mode 100644 index 548d0bd..0000000 --- a/apps/docs/content/docs/api/reference-admin.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Admin -full: true -_openapi: - toc: - - depth: 2 - title: Admin one - url: '#admin-one' - - depth: 2 - title: Admin create User Invitation - url: '#admin-create-user-invitation' - - depth: 2 - title: Admin remove User - url: '#admin-remove-user' - - depth: 2 - title: Admin get User By Token - url: '#admin-get-user-by-token' - - depth: 2 - title: Admin assign Permissions - url: '#admin-assign-permissions' - structuredData: - headings: - - content: Admin one - id: admin-one - - content: Admin create User Invitation - id: admin-create-user-invitation - - content: Admin remove User - id: admin-remove-user - - content: Admin get User By Token - id: admin-get-user-by-token - - content: Admin assign Permissions - id: admin-assign-permissions - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-application.mdx b/apps/docs/content/docs/api/reference-application.mdx deleted file mode 100644 index 3860b11..0000000 --- a/apps/docs/content/docs/api/reference-application.mdx +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Application -full: true -_openapi: - toc: - - depth: 2 - title: Application create - url: '#application-create' - - depth: 2 - title: Application one - url: '#application-one' - - depth: 2 - title: Application reload - url: '#application-reload' - - depth: 2 - title: Application delete - url: '#application-delete' - - depth: 2 - title: Application stop - url: '#application-stop' - - depth: 2 - title: Application start - url: '#application-start' - - depth: 2 - title: Application redeploy - url: '#application-redeploy' - - depth: 2 - title: Application save Environment - url: '#application-save-environment' - - depth: 2 - title: Application save Build Type - url: '#application-save-build-type' - - depth: 2 - title: Application save Github Provider - url: '#application-save-github-provider' - - depth: 2 - title: Application save Gitlab Provider - url: '#application-save-gitlab-provider' - - depth: 2 - title: Application save Bitbucket Provider - url: '#application-save-bitbucket-provider' - - depth: 2 - title: Application save Docker Provider - url: '#application-save-docker-provider' - - depth: 2 - title: Application save Git Prodiver - url: '#application-save-git-prodiver' - - depth: 2 - title: Application mark Running - url: '#application-mark-running' - - depth: 2 - title: Application update - url: '#application-update' - - depth: 2 - title: Application refresh Token - url: '#application-refresh-token' - - depth: 2 - title: Application deploy - url: '#application-deploy' - - depth: 2 - title: Application clean Queues - url: '#application-clean-queues' - - depth: 2 - title: Application read Traefik Config - url: '#application-read-traefik-config' - - depth: 2 - title: Application update Traefik Config - url: '#application-update-traefik-config' - - depth: 2 - title: Application read App Monitoring - url: '#application-read-app-monitoring' - structuredData: - headings: - - content: Application create - id: application-create - - content: Application one - id: application-one - - content: Application reload - id: application-reload - - content: Application delete - id: application-delete - - content: Application stop - id: application-stop - - content: Application start - id: application-start - - content: Application redeploy - id: application-redeploy - - content: Application save Environment - id: application-save-environment - - content: Application save Build Type - id: application-save-build-type - - content: Application save Github Provider - id: application-save-github-provider - - content: Application save Gitlab Provider - id: application-save-gitlab-provider - - content: Application save Bitbucket Provider - id: application-save-bitbucket-provider - - content: Application save Docker Provider - id: application-save-docker-provider - - content: Application save Git Prodiver - id: application-save-git-prodiver - - content: Application mark Running - id: application-mark-running - - content: Application update - id: application-update - - content: Application refresh Token - id: application-refresh-token - - content: Application deploy - id: application-deploy - - content: Application clean Queues - id: application-clean-queues - - content: Application read Traefik Config - id: application-read-traefik-config - - content: Application update Traefik Config - id: application-update-traefik-config - - content: Application read App Monitoring - id: application-read-app-monitoring - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-auth.mdx b/apps/docs/content/docs/api/reference-auth.mdx deleted file mode 100644 index ebf1cbb..0000000 --- a/apps/docs/content/docs/api/reference-auth.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Auth -full: true -_openapi: - toc: - - depth: 2 - title: Auth create Admin - url: '#auth-create-admin' - - depth: 2 - title: Auth create User - url: '#auth-create-user' - - depth: 2 - title: Auth login - url: '#auth-login' - - depth: 2 - title: Auth get - url: '#auth-get' - - depth: 2 - title: Auth logout - url: '#auth-logout' - - depth: 2 - title: Auth update - url: '#auth-update' - - depth: 2 - title: Auth generate Token - url: '#auth-generate-token' - - depth: 2 - title: Auth one - url: '#auth-one' - - depth: 2 - title: Auth generate2 F A Secret - url: '#auth-generate2-f-a-secret' - - depth: 2 - title: Auth verify2 F A Setup - url: '#auth-verify2-f-a-setup' - - depth: 2 - title: Auth verify Login2 F A - url: '#auth-verify-login2-f-a' - - depth: 2 - title: Auth disable2 F A - url: '#auth-disable2-f-a' - - depth: 2 - title: Auth send Reset Password Email - url: '#auth-send-reset-password-email' - - depth: 2 - title: Auth reset Password - url: '#auth-reset-password' - - depth: 2 - title: Auth confirm Email - url: '#auth-confirm-email' - structuredData: - headings: - - content: Auth create Admin - id: auth-create-admin - - content: Auth create User - id: auth-create-user - - content: Auth login - id: auth-login - - content: Auth get - id: auth-get - - content: Auth logout - id: auth-logout - - content: Auth update - id: auth-update - - content: Auth generate Token - id: auth-generate-token - - content: Auth one - id: auth-one - - content: Auth generate2 F A Secret - id: auth-generate2-f-a-secret - - content: Auth verify2 F A Setup - id: auth-verify2-f-a-setup - - content: Auth verify Login2 F A - id: auth-verify-login2-f-a - - content: Auth disable2 F A - id: auth-disable2-f-a - - content: Auth send Reset Password Email - id: auth-send-reset-password-email - - content: Auth reset Password - id: auth-reset-password - - content: Auth confirm Email - id: auth-confirm-email - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-backup.mdx b/apps/docs/content/docs/api/reference-backup.mdx deleted file mode 100644 index 5053281..0000000 --- a/apps/docs/content/docs/api/reference-backup.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Backup -full: true -_openapi: - toc: - - depth: 2 - title: Backup create - url: '#backup-create' - - depth: 2 - title: Backup one - url: '#backup-one' - - depth: 2 - title: Backup update - url: '#backup-update' - - depth: 2 - title: Backup remove - url: '#backup-remove' - - depth: 2 - title: Backup manual Backup Postgres - url: '#backup-manual-backup-postgres' - - depth: 2 - title: Backup manual Backup My Sql - url: '#backup-manual-backup-my-sql' - - depth: 2 - title: Backup manual Backup Mariadb - url: '#backup-manual-backup-mariadb' - - depth: 2 - title: Backup manual Backup Mongo - url: '#backup-manual-backup-mongo' - structuredData: - headings: - - content: Backup create - id: backup-create - - content: Backup one - id: backup-one - - content: Backup update - id: backup-update - - content: Backup remove - id: backup-remove - - content: Backup manual Backup Postgres - id: backup-manual-backup-postgres - - content: Backup manual Backup My Sql - id: backup-manual-backup-my-sql - - content: Backup manual Backup Mariadb - id: backup-manual-backup-mariadb - - content: Backup manual Backup Mongo - id: backup-manual-backup-mongo - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-bitbucket.mdx b/apps/docs/content/docs/api/reference-bitbucket.mdx deleted file mode 100644 index b8ca554..0000000 --- a/apps/docs/content/docs/api/reference-bitbucket.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Bitbucket -full: true -_openapi: - toc: - - depth: 2 - title: Bitbucket create - url: '#bitbucket-create' - - depth: 2 - title: Bitbucket one - url: '#bitbucket-one' - - depth: 2 - title: Bitbucket bitbucket Providers - url: '#bitbucket-bitbucket-providers' - - depth: 2 - title: Bitbucket get Bitbucket Repositories - url: '#bitbucket-get-bitbucket-repositories' - - depth: 2 - title: Bitbucket get Bitbucket Branches - url: '#bitbucket-get-bitbucket-branches' - - depth: 2 - title: Bitbucket test Connection - url: '#bitbucket-test-connection' - - depth: 2 - title: Bitbucket update - url: '#bitbucket-update' - structuredData: - headings: - - content: Bitbucket create - id: bitbucket-create - - content: Bitbucket one - id: bitbucket-one - - content: Bitbucket bitbucket Providers - id: bitbucket-bitbucket-providers - - content: Bitbucket get Bitbucket Repositories - id: bitbucket-get-bitbucket-repositories - - content: Bitbucket get Bitbucket Branches - id: bitbucket-get-bitbucket-branches - - content: Bitbucket test Connection - id: bitbucket-test-connection - - content: Bitbucket update - id: bitbucket-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-certificates.mdx b/apps/docs/content/docs/api/reference-certificates.mdx deleted file mode 100644 index 86000d0..0000000 --- a/apps/docs/content/docs/api/reference-certificates.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Certificates -full: true -_openapi: - toc: - - depth: 2 - title: Certificates create - url: '#certificates-create' - - depth: 2 - title: Certificates one - url: '#certificates-one' - - depth: 2 - title: Certificates remove - url: '#certificates-remove' - - depth: 2 - title: Certificates all - url: '#certificates-all' - structuredData: - headings: - - content: Certificates create - id: certificates-create - - content: Certificates one - id: certificates-one - - content: Certificates remove - id: certificates-remove - - content: Certificates all - id: certificates-all - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-cluster.mdx b/apps/docs/content/docs/api/reference-cluster.mdx deleted file mode 100644 index 6a8f92d..0000000 --- a/apps/docs/content/docs/api/reference-cluster.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Cluster -full: true -_openapi: - toc: - - depth: 2 - title: Cluster get Nodes - url: '#cluster-get-nodes' - - depth: 2 - title: Cluster remove Worker - url: '#cluster-remove-worker' - - depth: 2 - title: Cluster add Worker - url: '#cluster-add-worker' - - depth: 2 - title: Cluster add Manager - url: '#cluster-add-manager' - structuredData: - headings: - - content: Cluster get Nodes - id: cluster-get-nodes - - content: Cluster remove Worker - id: cluster-remove-worker - - content: Cluster add Worker - id: cluster-add-worker - - content: Cluster add Manager - id: cluster-add-manager - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-compose.mdx b/apps/docs/content/docs/api/reference-compose.mdx deleted file mode 100644 index 0fb7849..0000000 --- a/apps/docs/content/docs/api/reference-compose.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Compose -full: true -_openapi: - toc: - - depth: 2 - title: Compose create - url: '#compose-create' - - depth: 2 - title: Compose one - url: '#compose-one' - - depth: 2 - title: Compose update - url: '#compose-update' - - depth: 2 - title: Compose delete - url: '#compose-delete' - - depth: 2 - title: Compose clean Queues - url: '#compose-clean-queues' - - depth: 2 - title: Compose load Services - url: '#compose-load-services' - - depth: 2 - title: Compose fetch Source Type - url: '#compose-fetch-source-type' - - depth: 2 - title: Compose randomize Compose - url: '#compose-randomize-compose' - - depth: 2 - title: Compose get Converted Compose - url: '#compose-get-converted-compose' - - depth: 2 - title: Compose deploy - url: '#compose-deploy' - - depth: 2 - title: Compose redeploy - url: '#compose-redeploy' - - depth: 2 - title: Compose stop - url: '#compose-stop' - - depth: 2 - title: Compose get Default Command - url: '#compose-get-default-command' - - depth: 2 - title: Compose refresh Token - url: '#compose-refresh-token' - - depth: 2 - title: Compose deploy Template - url: '#compose-deploy-template' - - depth: 2 - title: Compose templates - url: '#compose-templates' - - depth: 2 - title: Compose get Tags - url: '#compose-get-tags' - structuredData: - headings: - - content: Compose create - id: compose-create - - content: Compose one - id: compose-one - - content: Compose update - id: compose-update - - content: Compose delete - id: compose-delete - - content: Compose clean Queues - id: compose-clean-queues - - content: Compose load Services - id: compose-load-services - - content: Compose fetch Source Type - id: compose-fetch-source-type - - content: Compose randomize Compose - id: compose-randomize-compose - - content: Compose get Converted Compose - id: compose-get-converted-compose - - content: Compose deploy - id: compose-deploy - - content: Compose redeploy - id: compose-redeploy - - content: Compose stop - id: compose-stop - - content: Compose get Default Command - id: compose-get-default-command - - content: Compose refresh Token - id: compose-refresh-token - - content: Compose deploy Template - id: compose-deploy-template - - content: Compose templates - id: compose-templates - - content: Compose get Tags - id: compose-get-tags - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-deployment.mdx b/apps/docs/content/docs/api/reference-deployment.mdx deleted file mode 100644 index 3489956..0000000 --- a/apps/docs/content/docs/api/reference-deployment.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Deployment -full: true -_openapi: - toc: - - depth: 2 - title: Deployment all - url: '#deployment-all' - - depth: 2 - title: Deployment all By Compose - url: '#deployment-all-by-compose' - - depth: 2 - title: Deployment all By Server - url: '#deployment-all-by-server' - structuredData: - headings: - - content: Deployment all - id: deployment-all - - content: Deployment all By Compose - id: deployment-all-by-compose - - content: Deployment all By Server - id: deployment-all-by-server - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-destination.mdx b/apps/docs/content/docs/api/reference-destination.mdx deleted file mode 100644 index 1a1bc82..0000000 --- a/apps/docs/content/docs/api/reference-destination.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Destination -full: true -_openapi: - toc: - - depth: 2 - title: Destination create - url: '#destination-create' - - depth: 2 - title: Destination test Connection - url: '#destination-test-connection' - - depth: 2 - title: Destination one - url: '#destination-one' - - depth: 2 - title: Destination all - url: '#destination-all' - - depth: 2 - title: Destination remove - url: '#destination-remove' - - depth: 2 - title: Destination update - url: '#destination-update' - structuredData: - headings: - - content: Destination create - id: destination-create - - content: Destination test Connection - id: destination-test-connection - - content: Destination one - id: destination-one - - content: Destination all - id: destination-all - - content: Destination remove - id: destination-remove - - content: Destination update - id: destination-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-docker.mdx b/apps/docs/content/docs/api/reference-docker.mdx deleted file mode 100644 index 272c250..0000000 --- a/apps/docs/content/docs/api/reference-docker.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Docker -full: true -_openapi: - toc: - - depth: 2 - title: Docker get Containers - url: '#docker-get-containers' - - depth: 2 - title: Docker restart Container - url: '#docker-restart-container' - - depth: 2 - title: Docker get Config - url: '#docker-get-config' - - depth: 2 - title: Docker get Containers By App Name Match - url: '#docker-get-containers-by-app-name-match' - - depth: 2 - title: Docker get Containers By App Label - url: '#docker-get-containers-by-app-label' - structuredData: - headings: - - content: Docker get Containers - id: docker-get-containers - - content: Docker restart Container - id: docker-restart-container - - content: Docker get Config - id: docker-get-config - - content: Docker get Containers By App Name Match - id: docker-get-containers-by-app-name-match - - content: Docker get Containers By App Label - id: docker-get-containers-by-app-label - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-domain.mdx b/apps/docs/content/docs/api/reference-domain.mdx deleted file mode 100644 index 9fd844e..0000000 --- a/apps/docs/content/docs/api/reference-domain.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Domain -full: true -_openapi: - toc: - - depth: 2 - title: Domain create - url: '#domain-create' - - depth: 2 - title: Domain by Application Id - url: '#domain-by-application-id' - - depth: 2 - title: Domain by Compose Id - url: '#domain-by-compose-id' - - depth: 2 - title: Domain generate Domain - url: '#domain-generate-domain' - - depth: 2 - title: Domain update - url: '#domain-update' - - depth: 2 - title: Domain one - url: '#domain-one' - - depth: 2 - title: Domain delete - url: '#domain-delete' - structuredData: - headings: - - content: Domain create - id: domain-create - - content: Domain by Application Id - id: domain-by-application-id - - content: Domain by Compose Id - id: domain-by-compose-id - - content: Domain generate Domain - id: domain-generate-domain - - content: Domain update - id: domain-update - - content: Domain one - id: domain-one - - content: Domain delete - id: domain-delete - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-gitProvider.mdx b/apps/docs/content/docs/api/reference-gitProvider.mdx deleted file mode 100644 index 5e0266c..0000000 --- a/apps/docs/content/docs/api/reference-gitProvider.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Git Provider -full: true -_openapi: - toc: - - depth: 2 - title: Git Provider get All - url: '#git-provider-get-all' - - depth: 2 - title: Git Provider remove - url: '#git-provider-remove' - structuredData: - headings: - - content: Git Provider get All - id: git-provider-get-all - - content: Git Provider remove - id: git-provider-remove - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-github.mdx b/apps/docs/content/docs/api/reference-github.mdx deleted file mode 100644 index 850f594..0000000 --- a/apps/docs/content/docs/api/reference-github.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Github -full: true -_openapi: - toc: - - depth: 2 - title: Github one - url: '#github-one' - - depth: 2 - title: Github get Github Repositories - url: '#github-get-github-repositories' - - depth: 2 - title: Github get Github Branches - url: '#github-get-github-branches' - - depth: 2 - title: Github github Providers - url: '#github-github-providers' - - depth: 2 - title: Github test Connection - url: '#github-test-connection' - - depth: 2 - title: Github update - url: '#github-update' - structuredData: - headings: - - content: Github one - id: github-one - - content: Github get Github Repositories - id: github-get-github-repositories - - content: Github get Github Branches - id: github-get-github-branches - - content: Github github Providers - id: github-github-providers - - content: Github test Connection - id: github-test-connection - - content: Github update - id: github-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-gitlab.mdx b/apps/docs/content/docs/api/reference-gitlab.mdx deleted file mode 100644 index 4aac6a1..0000000 --- a/apps/docs/content/docs/api/reference-gitlab.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Gitlab -full: true -_openapi: - toc: - - depth: 2 - title: Gitlab create - url: '#gitlab-create' - - depth: 2 - title: Gitlab one - url: '#gitlab-one' - - depth: 2 - title: Gitlab gitlab Providers - url: '#gitlab-gitlab-providers' - - depth: 2 - title: Gitlab get Gitlab Repositories - url: '#gitlab-get-gitlab-repositories' - - depth: 2 - title: Gitlab get Gitlab Branches - url: '#gitlab-get-gitlab-branches' - - depth: 2 - title: Gitlab test Connection - url: '#gitlab-test-connection' - - depth: 2 - title: Gitlab update - url: '#gitlab-update' - structuredData: - headings: - - content: Gitlab create - id: gitlab-create - - content: Gitlab one - id: gitlab-one - - content: Gitlab gitlab Providers - id: gitlab-gitlab-providers - - content: Gitlab get Gitlab Repositories - id: gitlab-get-gitlab-repositories - - content: Gitlab get Gitlab Branches - id: gitlab-get-gitlab-branches - - content: Gitlab test Connection - id: gitlab-test-connection - - content: Gitlab update - id: gitlab-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-mariadb.mdx b/apps/docs/content/docs/api/reference-mariadb.mdx deleted file mode 100644 index f656f00..0000000 --- a/apps/docs/content/docs/api/reference-mariadb.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Mariadb -full: true -_openapi: - toc: - - depth: 2 - title: Mariadb create - url: '#mariadb-create' - - depth: 2 - title: Mariadb one - url: '#mariadb-one' - - depth: 2 - title: Mariadb start - url: '#mariadb-start' - - depth: 2 - title: Mariadb stop - url: '#mariadb-stop' - - depth: 2 - title: Mariadb save External Port - url: '#mariadb-save-external-port' - - depth: 2 - title: Mariadb deploy - url: '#mariadb-deploy' - - depth: 2 - title: Mariadb change Status - url: '#mariadb-change-status' - - depth: 2 - title: Mariadb remove - url: '#mariadb-remove' - - depth: 2 - title: Mariadb save Environment - url: '#mariadb-save-environment' - - depth: 2 - title: Mariadb reload - url: '#mariadb-reload' - - depth: 2 - title: Mariadb update - url: '#mariadb-update' - structuredData: - headings: - - content: Mariadb create - id: mariadb-create - - content: Mariadb one - id: mariadb-one - - content: Mariadb start - id: mariadb-start - - content: Mariadb stop - id: mariadb-stop - - content: Mariadb save External Port - id: mariadb-save-external-port - - content: Mariadb deploy - id: mariadb-deploy - - content: Mariadb change Status - id: mariadb-change-status - - content: Mariadb remove - id: mariadb-remove - - content: Mariadb save Environment - id: mariadb-save-environment - - content: Mariadb reload - id: mariadb-reload - - content: Mariadb update - id: mariadb-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-mongo.mdx b/apps/docs/content/docs/api/reference-mongo.mdx deleted file mode 100644 index 418362e..0000000 --- a/apps/docs/content/docs/api/reference-mongo.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Mongo -full: true -_openapi: - toc: - - depth: 2 - title: Mongo create - url: '#mongo-create' - - depth: 2 - title: Mongo one - url: '#mongo-one' - - depth: 2 - title: Mongo start - url: '#mongo-start' - - depth: 2 - title: Mongo stop - url: '#mongo-stop' - - depth: 2 - title: Mongo save External Port - url: '#mongo-save-external-port' - - depth: 2 - title: Mongo deploy - url: '#mongo-deploy' - - depth: 2 - title: Mongo change Status - url: '#mongo-change-status' - - depth: 2 - title: Mongo reload - url: '#mongo-reload' - - depth: 2 - title: Mongo remove - url: '#mongo-remove' - - depth: 2 - title: Mongo save Environment - url: '#mongo-save-environment' - - depth: 2 - title: Mongo update - url: '#mongo-update' - structuredData: - headings: - - content: Mongo create - id: mongo-create - - content: Mongo one - id: mongo-one - - content: Mongo start - id: mongo-start - - content: Mongo stop - id: mongo-stop - - content: Mongo save External Port - id: mongo-save-external-port - - content: Mongo deploy - id: mongo-deploy - - content: Mongo change Status - id: mongo-change-status - - content: Mongo reload - id: mongo-reload - - content: Mongo remove - id: mongo-remove - - content: Mongo save Environment - id: mongo-save-environment - - content: Mongo update - id: mongo-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-mounts.mdx b/apps/docs/content/docs/api/reference-mounts.mdx deleted file mode 100644 index f014d77..0000000 --- a/apps/docs/content/docs/api/reference-mounts.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Mounts -full: true -_openapi: - toc: - - depth: 2 - title: Mounts create - url: '#mounts-create' - - depth: 2 - title: Mounts remove - url: '#mounts-remove' - - depth: 2 - title: Mounts one - url: '#mounts-one' - - depth: 2 - title: Mounts update - url: '#mounts-update' - structuredData: - headings: - - content: Mounts create - id: mounts-create - - content: Mounts remove - id: mounts-remove - - content: Mounts one - id: mounts-one - - content: Mounts update - id: mounts-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-mysql.mdx b/apps/docs/content/docs/api/reference-mysql.mdx deleted file mode 100644 index 8a0df9e..0000000 --- a/apps/docs/content/docs/api/reference-mysql.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Mysql -full: true -_openapi: - toc: - - depth: 2 - title: Mysql create - url: '#mysql-create' - - depth: 2 - title: Mysql one - url: '#mysql-one' - - depth: 2 - title: Mysql start - url: '#mysql-start' - - depth: 2 - title: Mysql stop - url: '#mysql-stop' - - depth: 2 - title: Mysql save External Port - url: '#mysql-save-external-port' - - depth: 2 - title: Mysql deploy - url: '#mysql-deploy' - - depth: 2 - title: Mysql change Status - url: '#mysql-change-status' - - depth: 2 - title: Mysql reload - url: '#mysql-reload' - - depth: 2 - title: Mysql remove - url: '#mysql-remove' - - depth: 2 - title: Mysql save Environment - url: '#mysql-save-environment' - - depth: 2 - title: Mysql update - url: '#mysql-update' - structuredData: - headings: - - content: Mysql create - id: mysql-create - - content: Mysql one - id: mysql-one - - content: Mysql start - id: mysql-start - - content: Mysql stop - id: mysql-stop - - content: Mysql save External Port - id: mysql-save-external-port - - content: Mysql deploy - id: mysql-deploy - - content: Mysql change Status - id: mysql-change-status - - content: Mysql reload - id: mysql-reload - - content: Mysql remove - id: mysql-remove - - content: Mysql save Environment - id: mysql-save-environment - - content: Mysql update - id: mysql-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-notification.mdx b/apps/docs/content/docs/api/reference-notification.mdx deleted file mode 100644 index ef65dad..0000000 --- a/apps/docs/content/docs/api/reference-notification.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Notification -full: true -_openapi: - toc: - - depth: 2 - title: Notification create Slack - url: '#notification-create-slack' - - depth: 2 - title: Notification update Slack - url: '#notification-update-slack' - - depth: 2 - title: Notification test Slack Connection - url: '#notification-test-slack-connection' - - depth: 2 - title: Notification create Telegram - url: '#notification-create-telegram' - - depth: 2 - title: Notification update Telegram - url: '#notification-update-telegram' - - depth: 2 - title: Notification test Telegram Connection - url: '#notification-test-telegram-connection' - - depth: 2 - title: Notification create Discord - url: '#notification-create-discord' - - depth: 2 - title: Notification update Discord - url: '#notification-update-discord' - - depth: 2 - title: Notification test Discord Connection - url: '#notification-test-discord-connection' - - depth: 2 - title: Notification create Email - url: '#notification-create-email' - - depth: 2 - title: Notification update Email - url: '#notification-update-email' - - depth: 2 - title: Notification test Email Connection - url: '#notification-test-email-connection' - - depth: 2 - title: Notification remove - url: '#notification-remove' - - depth: 2 - title: Notification one - url: '#notification-one' - - depth: 2 - title: Notification all - url: '#notification-all' - structuredData: - headings: - - content: Notification create Slack - id: notification-create-slack - - content: Notification update Slack - id: notification-update-slack - - content: Notification test Slack Connection - id: notification-test-slack-connection - - content: Notification create Telegram - id: notification-create-telegram - - content: Notification update Telegram - id: notification-update-telegram - - content: Notification test Telegram Connection - id: notification-test-telegram-connection - - content: Notification create Discord - id: notification-create-discord - - content: Notification update Discord - id: notification-update-discord - - content: Notification test Discord Connection - id: notification-test-discord-connection - - content: Notification create Email - id: notification-create-email - - content: Notification update Email - id: notification-update-email - - content: Notification test Email Connection - id: notification-test-email-connection - - content: Notification remove - id: notification-remove - - content: Notification one - id: notification-one - - content: Notification all - id: notification-all - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-port.mdx b/apps/docs/content/docs/api/reference-port.mdx deleted file mode 100644 index cf6f2e0..0000000 --- a/apps/docs/content/docs/api/reference-port.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Port -full: true -_openapi: - toc: - - depth: 2 - title: Port create - url: '#port-create' - - depth: 2 - title: Port one - url: '#port-one' - - depth: 2 - title: Port delete - url: '#port-delete' - - depth: 2 - title: Port update - url: '#port-update' - structuredData: - headings: - - content: Port create - id: port-create - - content: Port one - id: port-one - - content: Port delete - id: port-delete - - content: Port update - id: port-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-postgres.mdx b/apps/docs/content/docs/api/reference-postgres.mdx deleted file mode 100644 index c1e6e1c..0000000 --- a/apps/docs/content/docs/api/reference-postgres.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Postgres -full: true -_openapi: - toc: - - depth: 2 - title: Postgres create - url: '#postgres-create' - - depth: 2 - title: Postgres one - url: '#postgres-one' - - depth: 2 - title: Postgres start - url: '#postgres-start' - - depth: 2 - title: Postgres stop - url: '#postgres-stop' - - depth: 2 - title: Postgres save External Port - url: '#postgres-save-external-port' - - depth: 2 - title: Postgres deploy - url: '#postgres-deploy' - - depth: 2 - title: Postgres change Status - url: '#postgres-change-status' - - depth: 2 - title: Postgres remove - url: '#postgres-remove' - - depth: 2 - title: Postgres save Environment - url: '#postgres-save-environment' - - depth: 2 - title: Postgres reload - url: '#postgres-reload' - - depth: 2 - title: Postgres update - url: '#postgres-update' - structuredData: - headings: - - content: Postgres create - id: postgres-create - - content: Postgres one - id: postgres-one - - content: Postgres start - id: postgres-start - - content: Postgres stop - id: postgres-stop - - content: Postgres save External Port - id: postgres-save-external-port - - content: Postgres deploy - id: postgres-deploy - - content: Postgres change Status - id: postgres-change-status - - content: Postgres remove - id: postgres-remove - - content: Postgres save Environment - id: postgres-save-environment - - content: Postgres reload - id: postgres-reload - - content: Postgres update - id: postgres-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-project.mdx b/apps/docs/content/docs/api/reference-project.mdx deleted file mode 100644 index afde77f..0000000 --- a/apps/docs/content/docs/api/reference-project.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Project -full: true -_openapi: - toc: - - depth: 2 - title: Project create - url: '#project-create' - - depth: 2 - title: Project one - url: '#project-one' - - depth: 2 - title: Project all - url: '#project-all' - - depth: 2 - title: Project remove - url: '#project-remove' - - depth: 2 - title: Project update - url: '#project-update' - structuredData: - headings: - - content: Project create - id: project-create - - content: Project one - id: project-one - - content: Project all - id: project-all - - content: Project remove - id: project-remove - - content: Project update - id: project-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-redirects.mdx b/apps/docs/content/docs/api/reference-redirects.mdx deleted file mode 100644 index fac4dad..0000000 --- a/apps/docs/content/docs/api/reference-redirects.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Redirects -full: true -_openapi: - toc: - - depth: 2 - title: Redirects create - url: '#redirects-create' - - depth: 2 - title: Redirects one - url: '#redirects-one' - - depth: 2 - title: Redirects delete - url: '#redirects-delete' - - depth: 2 - title: Redirects update - url: '#redirects-update' - structuredData: - headings: - - content: Redirects create - id: redirects-create - - content: Redirects one - id: redirects-one - - content: Redirects delete - id: redirects-delete - - content: Redirects update - id: redirects-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-redis.mdx b/apps/docs/content/docs/api/reference-redis.mdx deleted file mode 100644 index 1ad55a5..0000000 --- a/apps/docs/content/docs/api/reference-redis.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Redis -full: true -_openapi: - toc: - - depth: 2 - title: Redis create - url: '#redis-create' - - depth: 2 - title: Redis one - url: '#redis-one' - - depth: 2 - title: Redis start - url: '#redis-start' - - depth: 2 - title: Redis reload - url: '#redis-reload' - - depth: 2 - title: Redis stop - url: '#redis-stop' - - depth: 2 - title: Redis save External Port - url: '#redis-save-external-port' - - depth: 2 - title: Redis deploy - url: '#redis-deploy' - - depth: 2 - title: Redis change Status - url: '#redis-change-status' - - depth: 2 - title: Redis remove - url: '#redis-remove' - - depth: 2 - title: Redis save Environment - url: '#redis-save-environment' - - depth: 2 - title: Redis update - url: '#redis-update' - structuredData: - headings: - - content: Redis create - id: redis-create - - content: Redis one - id: redis-one - - content: Redis start - id: redis-start - - content: Redis reload - id: redis-reload - - content: Redis stop - id: redis-stop - - content: Redis save External Port - id: redis-save-external-port - - content: Redis deploy - id: redis-deploy - - content: Redis change Status - id: redis-change-status - - content: Redis remove - id: redis-remove - - content: Redis save Environment - id: redis-save-environment - - content: Redis update - id: redis-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-registry.mdx b/apps/docs/content/docs/api/reference-registry.mdx deleted file mode 100644 index 1b15d67..0000000 --- a/apps/docs/content/docs/api/reference-registry.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Registry -full: true -_openapi: - toc: - - depth: 2 - title: Registry create - url: '#registry-create' - - depth: 2 - title: Registry remove - url: '#registry-remove' - - depth: 2 - title: Registry update - url: '#registry-update' - - depth: 2 - title: Registry all - url: '#registry-all' - - depth: 2 - title: Registry one - url: '#registry-one' - - depth: 2 - title: Registry test Registry - url: '#registry-test-registry' - structuredData: - headings: - - content: Registry create - id: registry-create - - content: Registry remove - id: registry-remove - - content: Registry update - id: registry-update - - content: Registry all - id: registry-all - - content: Registry one - id: registry-one - - content: Registry test Registry - id: registry-test-registry - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-security.mdx b/apps/docs/content/docs/api/reference-security.mdx deleted file mode 100644 index 9ddf724..0000000 --- a/apps/docs/content/docs/api/reference-security.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Security -full: true -_openapi: - toc: - - depth: 2 - title: Security create - url: '#security-create' - - depth: 2 - title: Security one - url: '#security-one' - - depth: 2 - title: Security delete - url: '#security-delete' - - depth: 2 - title: Security update - url: '#security-update' - structuredData: - headings: - - content: Security create - id: security-create - - content: Security one - id: security-one - - content: Security delete - id: security-delete - - content: Security update - id: security-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-server.mdx b/apps/docs/content/docs/api/reference-server.mdx deleted file mode 100644 index 7914637..0000000 --- a/apps/docs/content/docs/api/reference-server.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Server -full: true -_openapi: - toc: - - depth: 2 - title: Server create - url: '#server-create' - - depth: 2 - title: Server one - url: '#server-one' - - depth: 2 - title: Server all - url: '#server-all' - - depth: 2 - title: Server with S S H Key - url: '#server-with-s-s-h-key' - - depth: 2 - title: Server setup - url: '#server-setup' - - depth: 2 - title: Server remove - url: '#server-remove' - - depth: 2 - title: Server update - url: '#server-update' - structuredData: - headings: - - content: Server create - id: server-create - - content: Server one - id: server-one - - content: Server all - id: server-all - - content: Server with S S H Key - id: server-with-s-s-h-key - - content: Server setup - id: server-setup - - content: Server remove - id: server-remove - - content: Server update - id: server-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-settings.mdx b/apps/docs/content/docs/api/reference-settings.mdx deleted file mode 100644 index b66f4b4..0000000 --- a/apps/docs/content/docs/api/reference-settings.mdx +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Settings -full: true -_openapi: - toc: - - depth: 2 - title: Settings reload Server - url: '#settings-reload-server' - - depth: 2 - title: Settings reload Traefik - url: '#settings-reload-traefik' - - depth: 2 - title: Settings toggle Dashboard - url: '#settings-toggle-dashboard' - - depth: 2 - title: Settings clean Unused Images - url: '#settings-clean-unused-images' - - depth: 2 - title: Settings clean Unused Volumes - url: '#settings-clean-unused-volumes' - - depth: 2 - title: Settings clean Stopped Containers - url: '#settings-clean-stopped-containers' - - depth: 2 - title: Settings clean Docker Builder - url: '#settings-clean-docker-builder' - - depth: 2 - title: Settings clean Docker Prune - url: '#settings-clean-docker-prune' - - depth: 2 - title: Settings clean All - url: '#settings-clean-all' - - depth: 2 - title: Settings clean Monitoring - url: '#settings-clean-monitoring' - - depth: 2 - title: Settings save S S H Private Key - url: '#settings-save-s-s-h-private-key' - - depth: 2 - title: Settings assign Domain Server - url: '#settings-assign-domain-server' - - depth: 2 - title: Settings clean S S H Private Key - url: '#settings-clean-s-s-h-private-key' - - depth: 2 - title: Settings update Docker Cleanup - url: '#settings-update-docker-cleanup' - - depth: 2 - title: Settings read Traefik Config - url: '#settings-read-traefik-config' - - depth: 2 - title: Settings update Traefik Config - url: '#settings-update-traefik-config' - - depth: 2 - title: Settings read Web Server Traefik Config - url: '#settings-read-web-server-traefik-config' - - depth: 2 - title: Settings update Web Server Traefik Config - url: '#settings-update-web-server-traefik-config' - - depth: 2 - title: Settings read Middleware Traefik Config - url: '#settings-read-middleware-traefik-config' - - depth: 2 - title: Settings update Middleware Traefik Config - url: '#settings-update-middleware-traefik-config' - - depth: 2 - title: Settings check And Update Image - url: '#settings-check-and-update-image' - - depth: 2 - title: Settings update Server - url: '#settings-update-server' - - depth: 2 - title: Settings get Dokploy Version - url: '#settings-get-dokploy-version' - - depth: 2 - title: Settings read Directories - url: '#settings-read-directories' - - depth: 2 - title: Settings update Traefik File - url: '#settings-update-traefik-file' - - depth: 2 - title: Settings read Traefik File - url: '#settings-read-traefik-file' - - depth: 2 - title: Settings get Ip - url: '#settings-get-ip' - - depth: 2 - title: Settings get Open Api Document - url: '#settings-get-open-api-document' - - depth: 2 - title: Settings read Traefik Env - url: '#settings-read-traefik-env' - - depth: 2 - title: Settings write Traefik Env - url: '#settings-write-traefik-env' - - depth: 2 - title: Settings have Traefik Dashboard Port Enabled - url: '#settings-have-traefik-dashboard-port-enabled' - - depth: 2 - title: Settings read Stats - url: '#settings-read-stats' - - depth: 2 - title: Settings get Log Rotate Status - url: '#settings-get-log-rotate-status' - - depth: 2 - title: Settings toggle Log Rotate - url: '#settings-toggle-log-rotate' - - depth: 2 - title: Settings have Activate Requests - url: '#settings-have-activate-requests' - - depth: 2 - title: Settings toggle Requests - url: '#settings-toggle-requests' - - depth: 2 - title: Settings is Cloud - url: '#settings-is-cloud' - - depth: 2 - title: Settings health - url: '#settings-health' - structuredData: - headings: - - content: Settings reload Server - id: settings-reload-server - - content: Settings reload Traefik - id: settings-reload-traefik - - content: Settings toggle Dashboard - id: settings-toggle-dashboard - - content: Settings clean Unused Images - id: settings-clean-unused-images - - content: Settings clean Unused Volumes - id: settings-clean-unused-volumes - - content: Settings clean Stopped Containers - id: settings-clean-stopped-containers - - content: Settings clean Docker Builder - id: settings-clean-docker-builder - - content: Settings clean Docker Prune - id: settings-clean-docker-prune - - content: Settings clean All - id: settings-clean-all - - content: Settings clean Monitoring - id: settings-clean-monitoring - - content: Settings save S S H Private Key - id: settings-save-s-s-h-private-key - - content: Settings assign Domain Server - id: settings-assign-domain-server - - content: Settings clean S S H Private Key - id: settings-clean-s-s-h-private-key - - content: Settings update Docker Cleanup - id: settings-update-docker-cleanup - - content: Settings read Traefik Config - id: settings-read-traefik-config - - content: Settings update Traefik Config - id: settings-update-traefik-config - - content: Settings read Web Server Traefik Config - id: settings-read-web-server-traefik-config - - content: Settings update Web Server Traefik Config - id: settings-update-web-server-traefik-config - - content: Settings read Middleware Traefik Config - id: settings-read-middleware-traefik-config - - content: Settings update Middleware Traefik Config - id: settings-update-middleware-traefik-config - - content: Settings check And Update Image - id: settings-check-and-update-image - - content: Settings update Server - id: settings-update-server - - content: Settings get Dokploy Version - id: settings-get-dokploy-version - - content: Settings read Directories - id: settings-read-directories - - content: Settings update Traefik File - id: settings-update-traefik-file - - content: Settings read Traefik File - id: settings-read-traefik-file - - content: Settings get Ip - id: settings-get-ip - - content: Settings get Open Api Document - id: settings-get-open-api-document - - content: Settings read Traefik Env - id: settings-read-traefik-env - - content: Settings write Traefik Env - id: settings-write-traefik-env - - content: Settings have Traefik Dashboard Port Enabled - id: settings-have-traefik-dashboard-port-enabled - - content: Settings read Stats - id: settings-read-stats - - content: Settings get Log Rotate Status - id: settings-get-log-rotate-status - - content: Settings toggle Log Rotate - id: settings-toggle-log-rotate - - content: Settings have Activate Requests - id: settings-have-activate-requests - - content: Settings toggle Requests - id: settings-toggle-requests - - content: Settings is Cloud - id: settings-is-cloud - - content: Settings health - id: settings-health - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-sshKey.mdx b/apps/docs/content/docs/api/reference-sshKey.mdx deleted file mode 100644 index c8a8bde..0000000 --- a/apps/docs/content/docs/api/reference-sshKey.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Ssh Key -full: true -_openapi: - toc: - - depth: 2 - title: Ssh Key create - url: '#ssh-key-create' - - depth: 2 - title: Ssh Key remove - url: '#ssh-key-remove' - - depth: 2 - title: Ssh Key one - url: '#ssh-key-one' - - depth: 2 - title: Ssh Key all - url: '#ssh-key-all' - - depth: 2 - title: Ssh Key generate - url: '#ssh-key-generate' - - depth: 2 - title: Ssh Key update - url: '#ssh-key-update' - structuredData: - headings: - - content: Ssh Key create - id: ssh-key-create - - content: Ssh Key remove - id: ssh-key-remove - - content: Ssh Key one - id: ssh-key-one - - content: Ssh Key all - id: ssh-key-all - - content: Ssh Key generate - id: ssh-key-generate - - content: Ssh Key update - id: ssh-key-update - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-stripe.mdx b/apps/docs/content/docs/api/reference-stripe.mdx deleted file mode 100644 index e530c0a..0000000 --- a/apps/docs/content/docs/api/reference-stripe.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Stripe -full: true -_openapi: - toc: - - depth: 2 - title: Stripe get Products - url: '#stripe-get-products' - - depth: 2 - title: Stripe create Checkout Session - url: '#stripe-create-checkout-session' - - depth: 2 - title: Stripe create Customer Portal Session - url: '#stripe-create-customer-portal-session' - - depth: 2 - title: Stripe can Create More Servers - url: '#stripe-can-create-more-servers' - structuredData: - headings: - - content: Stripe get Products - id: stripe-get-products - - content: Stripe create Checkout Session - id: stripe-create-checkout-session - - content: Stripe create Customer Portal Session - id: stripe-create-customer-portal-session - - content: Stripe can Create More Servers - id: stripe-can-create-more-servers - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/api/reference-user.mdx b/apps/docs/content/docs/api/reference-user.mdx deleted file mode 100644 index 2984521..0000000 --- a/apps/docs/content/docs/api/reference-user.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: User -full: true -_openapi: - toc: - - depth: 2 - title: User all - url: '#user-all' - - depth: 2 - title: User by Auth Id - url: '#user-by-auth-id' - - depth: 2 - title: User by User Id - url: '#user-by-user-id' - structuredData: - headings: - - content: User all - id: user-all - - content: User by Auth Id - id: user-by-auth-id - - content: User by User Id - id: user-by-user-id - contents: [] ---- - - \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/astro-ssr.cn.mdx b/apps/docs/content/docs/core/(examples)/astro-ssr.cn.mdx deleted file mode 100644 index ff8a2c4..0000000 --- a/apps/docs/content/docs/core/(examples)/astro-ssr.cn.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Astro SSR -description: 部署一个简单的 Astro SSR 应用程序。 ---- - - -此示例将部署一个简单的 Astro SSR 应用程序。 - - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/astro-ssr` - -2. **添加环境变量**: - - 导航到“环境”选项卡并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/astro.cn.mdx b/apps/docs/content/docs/core/(examples)/astro.cn.mdx deleted file mode 100644 index 84b5570..0000000 --- a/apps/docs/content/docs/core/(examples)/astro.cn.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Astro -description: 部署一个简单的 Astro 应用程序。 ---- - -此示例将部署一个简单的 Astro 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/astro` - -2. **添加环境变量**: - - 导航到“环境”选项卡并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/lit.cn.mdx b/apps/docs/content/docs/core/(examples)/lit.cn.mdx deleted file mode 100644 index dd76802..0000000 --- a/apps/docs/content/docs/core/(examples)/lit.cn.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Lit -description: 部署一个简单的 Lit 应用程序。 ---- - - -此示例将部署一个简单的 Lit 应用程序。 - - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/lit` - -2. **添加环境变量**: - - 导航到“环境”选项卡并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/nestjs.cn.mdx b/apps/docs/content/docs/core/(examples)/nestjs.cn.mdx deleted file mode 100644 index c7a8e69..0000000 --- a/apps/docs/content/docs/core/(examples)/nestjs.cn.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Nest.js -description: 部署一个简单的 Nest.js 应用程序。 ---- - - -此示例将部署一个简单的 Nest.js 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/nestjs` - -2. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -3. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 diff --git a/apps/docs/content/docs/core/(examples)/nextjs.cn.mdx b/apps/docs/content/docs/core/(examples)/nextjs.cn.mdx deleted file mode 100644 index 7014475..0000000 --- a/apps/docs/content/docs/core/(examples)/nextjs.cn.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Next.js -description: 部署一个简单的 Next.js 应用程序。 ---- - - -此示例将部署一个简单的 Next.js 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/nextjs` - -2. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -3. **生成域名**: - 1. 点击生成域名按钮。 - 2. 将为您生成一个新域名。 - 3. 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 diff --git a/apps/docs/content/docs/core/(examples)/preact.cn.mdx b/apps/docs/content/docs/core/(examples)/preact.cn.mdx deleted file mode 100644 index 7874f96..0000000 --- a/apps/docs/content/docs/core/(examples)/preact.cn.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Preact -description: 部署一个简单的 Preact 应用程序。 ---- - - -此示例将部署一个简单的 Preact 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/preact` - -2. **添加环境变量**: -- 导航到“环境”选项卡,并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/qwik.cn.mdx b/apps/docs/content/docs/core/(examples)/qwik.cn.mdx deleted file mode 100644 index 164d217..0000000 --- a/apps/docs/content/docs/core/(examples)/qwik.cn.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Qwik -description: 部署一个简单的 Qwik 应用程序。 ---- - - -此示例将部署一个简单的 Qwik 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/qwik` - -2. **添加环境变量**: -- 导航到“环境”选项卡,并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/remix.cn.mdx b/apps/docs/content/docs/core/(examples)/remix.cn.mdx deleted file mode 100644 index f8bb1a3..0000000 --- a/apps/docs/content/docs/core/(examples)/remix.cn.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Remix -description: 部署一个简单的 Remix 应用程序。 ---- - - -此示例将部署一个简单的 Remix 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/remix` - -2. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -3. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 diff --git a/apps/docs/content/docs/core/(examples)/solidjs.cn.mdx b/apps/docs/content/docs/core/(examples)/solidjs.cn.mdx deleted file mode 100644 index b61bfcf..0000000 --- a/apps/docs/content/docs/core/(examples)/solidjs.cn.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Solid.js -description: 部署一个简单的 Solid.js 应用程序。 ---- - - -此示例将部署一个简单的 Solid.js 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/solidjs` - -2. **添加环境变量**: -- 导航到“环境”选项卡并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run serve" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/svelte.cn.mdx b/apps/docs/content/docs/core/(examples)/svelte.cn.mdx deleted file mode 100644 index f57c6e2..0000000 --- a/apps/docs/content/docs/core/(examples)/svelte.cn.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Svelte -description: 部署一个简单的 Svelte 应用程序。 ---- - - -此示例将部署一个简单的 Svelte 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/svelte` - -2. **添加环境变量**: -- 导航到“环境”选项卡并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/vite-react.cn.mdx b/apps/docs/content/docs/core/(examples)/vite-react.cn.mdx deleted file mode 100644 index bfdd430..0000000 --- a/apps/docs/content/docs/core/(examples)/vite-react.cn.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Vite React -description: 部署一个简单的 Vite React 应用程序。 ---- - - -此示例将部署一个简单的 Vite React 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/vite` - -2. **添加环境变量**: -- 导航到“环境”选项卡并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/(examples)/vuejs.cn.mdx b/apps/docs/content/docs/core/(examples)/vuejs.cn.mdx deleted file mode 100644 index badc775..0000000 --- a/apps/docs/content/docs/core/(examples)/vuejs.cn.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Vue.js -description: 部署一个简单的 Vue.js 应用程序。 ---- - - -此示例将部署一个简单的 Vue.js 应用程序。 - -1. **在您的应用程序中使用 Git 提供商**: - - 仓库:`https://github.com/Dokploy/examples.git` - - 分支:`main` - - 构建路径:`/vuejs` - -2. **添加环境变量**: -- 导航到“环境”选项卡并添加以下变量: - ```cmd - NIXPACKS_START_CMD="pnpm run preview" - ``` - -3. **点击部署**: - - 通过点击部署按钮来部署您的应用程序。 - -4. **生成域名**: - - 点击生成域名按钮。 - - 将为您生成一个新域名。 - - 您可以使用此域名访问您的应用程序。 - -如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。 \ No newline at end of file diff --git a/apps/docs/content/docs/core/applications/advanced.mdx b/apps/docs/content/docs/core/applications/advanced.mdx index 9847eef..619c22a 100644 --- a/apps/docs/content/docs/core/applications/advanced.mdx +++ b/apps/docs/content/docs/core/applications/advanced.mdx @@ -124,7 +124,8 @@ Configure persistent storage for your application to ensure data remains intact **File Mount**: Specifically for single files, useful for configuration files. 1. **Content**: The content to store in the file. -2. **Mount Path**: Path in the container where the file is placed. +2. **File Path**: The name of the file. +3. **Mount Path**: Path in the container where the file is placed. **The path must also contain the filename.** File mounts are a dokploy features, this create a file in a folder called `files` inside your project, so it recreates every single time you deploy your project. diff --git a/apps/docs/content/docs/core/applications/build-type.mdx b/apps/docs/content/docs/core/applications/build-type.mdx index cb6e9ce..08f103c 100644 --- a/apps/docs/content/docs/core/applications/build-type.mdx +++ b/apps/docs/content/docs/core/applications/build-type.mdx @@ -50,11 +50,11 @@ Railpack exposes multiple Build Variables, you can define them in the `Environme | Name | Description | | :-------------------- | :--------------------------------------------------------------------------------------------------------- | -| `BUILD_CMD` | Set the command to run for the build step. This overwrites any commands that come from providers | -| `START_CMD` | Set the command to run when the container starts | -| `PACKAGES` | Install additional Mise packages. In the format `pkg@version`. The latest version is used if not provided. | -| `BUILD_APT_PACKAGES` | Install additional Apt packages during build | -| `DEPLOY_APT_PACKAGES` | Install additional Apt packages in the final image | +| `RAILPACK_BUILD_CMD` | Set the command to run for the build step. This overwrites any commands that come from providers | +| `RAILPACK_START_CMD` | Set the command to run when the container starts | +| `RAILPACK_PACKAGES` | Install additional Mise packages. In the format `pkg@version`. The latest version is used if not provided. | +| `RAILPACK_BUILD_APT_PACKAGES` | Install additional Apt packages during build | +| `RAILPACK_DEPLOY_APT_PACKAGES` | Install additional Apt packages in the final image | you can read more about Railpack [here](https://railpack.com/config/environment-variables). diff --git a/apps/docs/content/docs/core/cluster.mdx b/apps/docs/content/docs/core/cluster.mdx index 134e801..72d971b 100644 --- a/apps/docs/content/docs/core/cluster.mdx +++ b/apps/docs/content/docs/core/cluster.mdx @@ -38,24 +38,20 @@ If you choose the second option, we will proceed to configure the different serv To start, we need to configure a Docker registry, as when deploying an application, you need a registry to deploy and download the application image on the other servers. -We offer two ways to configure a registry: - -1. **External Registry**: Use any registry you want. -2. **Self-Hosted Registry**: We create and configure a self-hosted registry for you. - ### External Registry -You can use any registry, such as Docker Hub, DigitalOcean Spaces, ECR, or your choice. Make sure to enter the correct credentials and test the connection before adding the registry. +You can use any external registry of your choice. Here are some popular options: -### Self-Hosted Registry +1. **Docker Hub** - Free tier available, easy to set up +2. **GitHub Container Registry (ghcr.io)** - Free for public repositories +3. **DigitalOcean Container Registry** - Simple setup with good integration +4. **Amazon ECR** - AWS's managed container registry +5. **Google Container Registry** - Google Cloud's managed registry +6. **Azure Container Registry** - Microsoft's managed registry -We will ask you for three things: +Make sure to enter the correct credentials and test the connection before adding the registry to your cluster configuration. -1. A user. -2. A password. -3. A domain. Ensure this domain is pointing to the dokploy VPS. - -Once set up, the Cluster section will be unlocked. +Once configured, the Cluster section will be unlocked. ## Understanding Docker Swarm diff --git a/apps/docs/content/docs/core/docker-compose/index.mdx b/apps/docs/content/docs/core/docker-compose/index.mdx index 5d24dd6..9c9ea50 100644 --- a/apps/docs/content/docs/core/docker-compose/index.mdx +++ b/apps/docs/content/docs/core/docker-compose/index.mdx @@ -73,6 +73,8 @@ volumes: - "../files/my-configs:/etc/my-app/config" ✅ ``` +**Important:** If you need to use files from your repository (configuration files, scripts, etc.), you must move them to Dokploy's File Mounts (via Advanced → Mounts) instead of mounting them directly from the repository. When using AutoDeploy, Dokploy performs a `git clone` on each deployment, which clears the repository directory. Mounting files directly from your repository using relative paths (e.g., `./` or `./config/file.conf`) will cause them to be lost or empty in subsequent deployments. See the [Troubleshooting guide](/docs/core/troubleshooting#using-files-from-your-repository) for more details. + ## Keyboard Shortcuts diff --git a/apps/docs/content/docs/core/domains/cloudflare.mdx b/apps/docs/content/docs/core/domains/cloudflare.mdx index 61c353a..a85de68 100644 --- a/apps/docs/content/docs/core/domains/cloudflare.mdx +++ b/apps/docs/content/docs/core/domains/cloudflare.mdx @@ -39,8 +39,13 @@ To switch between modes, follow these steps: Follow the steps in the same order to prevent any issues. +You can create a certificate for your origin server using two methods: +- Using Let's Encrypt to generate a certificate for your origin server. +- Using Cloudflare's Origin CA to generate a certificate for your origin server. + We assume that you have enabled the `Full (Strict)` mode in the previous step, is super important to follow the steps in the same order to prevent any issues. +### Using Let's Encrypt 1. Go to cloudflare dashboard and then click on `Account Home` -> Select the Domain. 2. On the left side, click `DNS`. 3. Click on `Records`. @@ -62,6 +67,35 @@ We assume that you have enabled the `Full (Strict)` mode in the previous step, i 19. Wait a few seconds and refresh the application. 20. You should see the application running on the domain you just created. +### Using Cloudflare's Origin CA +1. Go to cloudflare dashboard and then click on `Account Home` -> Select the Domain. +2. On the left side, click `SSL/TLS`. +3. Click on `Origin Server`. +4. Click on `Create Certificate`. +5. Select `Generate private key and CSR with Cloudflare`. +6. Choose the list of hostnames you want the certificate to cover eg. `api.dokploy.com`. +7. Choose the validity period eg. `15 years`. +8. Click `Create`. +9. Using the PEM format, copy the `Origin Certificate` and `Private Key` in the respective fields in the dokploy new certificate panel (Certificates > Add Certificate). +10. Go to `Domains` section in your application. +11. Click `Create Domain`. +12. In the `Host` field, enter the domain name eg. `api.dokploy.com`. (Make sure that the domain is already pointing to your server IP in Cloudflare DNS settings and the **hostname matches the one in the certificate**). +13. In the `Path` field, enter the path eg. `/`. +14. In the `Container Port` field, enter the port where your application is running eg. `3000`. +15. In the `HTTPS` field enable `ON`. +16. In the `Certificate` field select `None`. +17. Click `Create`. + +Using Cloudflare's Origin CA, you are sure that the certificate will be valid for the next 15 years, or the duration you selected, and you don't have to worry about failed renewals. + + +You can also create a certificate for wildcards domains eg. `*.dokploy.com` and use it for multiple subdomains. + + + +**Important**: With a free Cloudflare account, this methods work only for the main domain and subdomains, not for sub-subdomains. Eg. `api.dokploy.com` works but `staging.api.dokploy.com` does not work. + + ## Assign a Domain Flexible diff --git a/apps/docs/content/docs/core/goodies.mdx b/apps/docs/content/docs/core/goodies.mdx index 66c88d0..05c41bf 100644 --- a/apps/docs/content/docs/core/goodies.mdx +++ b/apps/docs/content/docs/core/goodies.mdx @@ -7,6 +7,7 @@ description: "Dokploy has certain goodies that are external that can be used wit 2. **Dokploy Oracle infrastructure**: Deploy Dokploy on Oracle infrastructure [Github](https://github.com/statickidz/dokploy-oci-free) 3. **Dokploy Deploy Action 1**: Automatic Dokploy deployments on Github [Github](https://github.com/benbristow/dokploy-deploy-action) 4. **Dokploy Deploy Action 2**: Automatic Dokploy deployments on Github [Github](https://github.com/jmischler72/dokploy-deploy-action) +5. **Dokploy Deploy Action 3**: Automatic Dokploy deployments on Github (Support both `application` and `compose` deployment) [Github](https://github.com/nhridoy/dokploy-deploy-action) 5. **Dokploy JS Sdk**: Dokploy JS SDK [Github](https://github.com/quiint/dokploy.js) 6. **Templates Collection** : Docker compose collection for Dokploy [Github](https://github.com/benbristow/dokploy-compose-templates) 7. **Dokploy Port Updater**: Dokploy Port Updater [Github](https://github.com/clockradios/dokploy-port-updater) diff --git a/apps/docs/content/docs/core/manual-installation.mdx b/apps/docs/content/docs/core/manual-installation.mdx index 9fa3088..ce8f6af 100644 --- a/apps/docs/content/docs/core/manual-installation.mdx +++ b/apps/docs/content/docs/core/manual-installation.mdx @@ -133,17 +133,17 @@ install_dokploy() { --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ - --mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \ + --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 docker service create \ --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ - --mount type=volume,source=redis-data-volume,target=/data \ + --mount type=volume,source=dokploy-redis,target=/data \ redis:7 - docker pull traefik:v3.5.0 + docker pull traefik:v3.6.1 docker pull dokploy/dokploy:latest # Installation @@ -153,7 +153,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-docker-config,target=/root/.docker \ + --mount type=volume,source=dokploy,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ @@ -167,11 +167,11 @@ install_dokploy() { --restart always \ -v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \ -v /etc/dokploy/traefik/dynamic:/etc/dokploy/traefik/dynamic \ - -v /var/run/docker.sock:/var/run/docker.sock \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ -p 80:80/tcp \ -p 443:443/tcp \ -p 443:443/udp \ - traefik:v3.5.0 + traefik:v3.6.1 docker network connect dokploy-network dokploy-traefik @@ -183,11 +183,11 @@ install_dokploy() { # --network dokploy-network \ # --mount type=bind,source=/etc/dokploy/traefik/traefik.yml,target=/etc/traefik/traefik.yml \ # --mount type=bind,source=/etc/dokploy/traefik/dynamic,target=/etc/dokploy/traefik/dynamic \ - # --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ + # --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock,readonly \ # --publish mode=host,published=443,target=443 \ # --publish mode=host,published=80,target=80 \ # --publish mode=host,published=443,target=443,protocol=udp \ - # traefik:v3.5.0 + # traefik:v3.6.1 GREEN="\033[0;32m" YELLOW="\033[1;33m" diff --git a/apps/docs/content/docs/core/multi-server/deployments.mdx b/apps/docs/content/docs/core/multi-server/deployments.mdx index 059fbac..14d3fac 100644 --- a/apps/docs/content/docs/core/multi-server/deployments.mdx +++ b/apps/docs/content/docs/core/multi-server/deployments.mdx @@ -16,6 +16,10 @@ The server setup process prepares the necessary environment for securely and eff Root access to the server is required. We currently do not support non-root deployments. + + If your remote server is configured with a different shell (other than bash), you must configure bash as the default shell, as Dokploy has been developed and tested with bash. + + + If your remote server is configured with a different shell (other than bash), you must configure bash as the default shell, as Dokploy has been developed and tested with bash. + + 2. Create an SSH key by going to `/dashboard/settings/ssh-keys` and add a new key. Be sure to copy the public key. + If you need to use files from your repository (e.g., configuration files, scripts, or directories), you **must** move them to Dokploy's file mounts and reference them manually using the Dokploy interface. This is because when using AutoDeploy, Dokploy performs a `git clone` operation on each deployment, which clears the repository directory. If you mount files directly from your repository using relative paths like `./` or `./docker/config/odoo.conf`, these files will be lost or empty in subsequent deployments, even though the first deployment may work correctly. + + +**Why this happens:** +- On the first deployment, the files exist and are mounted correctly +- On subsequent deployments, Dokploy cleans the directory and performs a fresh `git clone` +- Docker loses the reference to the files that were in the filesystem, and the new files have a new reference +- This causes mounted directories and files to be empty or missing inside the container + +**Solution:** +1. Go to **Advanced** → **Mounts** in your Docker Compose application +2. Create a new **File Mount** for each file or directory you need from your repository +3. Copy the content from your repository files into the File Mount content field +4. Specify the file path for your configuration +5. Reference the file mount in your `docker-compose.yml` using the `../files/` path: + +```yaml +volumes: + - "../files/my-config.json:/etc/my-app/config" ✅ + - "../files/my-directory:/path/in/container" ✅ +``` + +**Example:** +Instead of mounting directly from your repository: +```yaml +volumes: + - ./:/mnt/extra-addons/va_subscription_18 ❌ + - ./docker/config/odoo.conf:/etc/odoo/odoo.conf ❌ +``` + +Use Dokploy's file mounts: +```yaml +volumes: + - ../files/va_subscription_18:/mnt/extra-addons/va_subscription_18 ✅ + - ../files/odoo.conf:/etc/odoo/odoo.conf ✅ +``` + ## Logs Not Loading When Deploying to a Remote Server? There are a few potential reasons for this: @@ -204,6 +244,10 @@ volumes: - ../files/my-config.json:/etc/my-app/config ``` + + **Important for AutoDeploy users:** If you have configuration files or directories in your repository that you need to mount into your containers, you must copy their content to Dokploy's File Mounts (via Advanced → Mounts) instead of mounting them directly from the repository. This ensures the files persist across deployments, as the repository directory is cleaned and re-cloned on each AutoDeploy. + + ## Failed to initialize Docker Swarm @@ -395,7 +439,7 @@ docker service rm dokploy-redis --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ - --mount type=volume,source=redis-data-volume,target=/data \ + --mount type=volume,source=dokploy-redis,target=/data \ redis:7 ``` @@ -412,7 +456,7 @@ docker service rm dokploy-postgres --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ - --mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \ + --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 ``` @@ -428,11 +472,11 @@ docker run -d \ --restart always \ -v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \ -v /etc/dokploy/traefik/dynamic:/etc/dokploy/traefik/dynamic \ - -v /var/run/docker.sock:/var/run/docker.sock \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ -p 80:80/tcp \ -p 443:443/tcp \ -p 443:443/udp \ - traefik:v3.5.0 + traefik:v3.6.1 docker network connect dokploy-network dokploy-traefik @@ -440,16 +484,17 @@ docker network connect dokploy-network dokploy-traefik docker service rm dokploy-traefik # Create a new dokploy-traefik service -docker run -d \ - --name dokploy-traefik \ - --restart always \ - -v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \ - -v /etc/dokploy/traefik/dynamic:/etc/dokploy/traefik/dynamic \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -p 80:80/tcp \ - -p 443:443/tcp \ - -p 443:443/udp \ - traefik:v3.5.0 +docker service create \ + --name dokploy-traefik \ + --constraint 'node.role==manager' \ + --network dokploy-network \ + --mount type=bind,source=/etc/dokploy/traefik/traefik.yml,target=/etc/traefik/traefik.yml \ + --mount type=bind,source=/etc/dokploy/traefik/dynamic,target=/etc/dokploy/traefik/dynamic \ + --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ + --publish mode=host,published=443,target=443 \ + --publish mode=host,published=80,target=80 \ + --publish mode=host,published=443,target=443,protocol=udp \ + traefik:v3.6.1 ``` Remove the dokploy service: @@ -473,7 +518,7 @@ docker service create \ --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-docker-config,target=/root/.docker \ + --mount type=volume,source=dokploy,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ diff --git a/apps/docs/content/docs/core/uninstall.cn.mdx b/apps/docs/content/docs/core/uninstall.cn.mdx deleted file mode 100644 index 790a74b..0000000 --- a/apps/docs/content/docs/core/uninstall.cn.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "卸载" -description: "了解如何在服务器上卸载 Dokploy" ---- - -## 卸载步骤 - -按照以下步骤从您的服务器中完全删除 Dokploy 及其组件。 - -### 第 1 步: 删除 Docker Swarm 服务 - -首先,删除 Docker Swarm 中的 Dokploy 以及相关服务: - -```bash -docker service rm dokploy dokploy-traefik dokploy-postgres dokploy-redis -``` - -### 第 2 步: 删除 Docker 挂载卷 - -接下来,删除 Dokploy 创建的 Docker 卷: - -```bash -docker volume rm -f dokploy-postgres-database redis-data-volume -``` - -### 第 3 步: 删除 Dokploy 文件 - -最后,从服务器上删除 Dokploy 文件和目录: - -```bash -sudo rm -rf /etc/dokploy -``` diff --git a/apps/docs/content/docs/core/uninstall.mdx b/apps/docs/content/docs/core/uninstall.mdx index b7123dc..6bdb0bc 100644 --- a/apps/docs/content/docs/core/uninstall.mdx +++ b/apps/docs/content/docs/core/uninstall.mdx @@ -12,7 +12,8 @@ Follow these steps to completely remove Dokploy and its components from your ser Remove the docker swarm services created by Dokploy: ```bash - docker service rm dokploy dokploy-traefik dokploy-postgres dokploy-redis + docker service remove dokploy dokploy-traefik dokploy-postgres dokploy-redis + docker container remove -f dokploy-traefik ``` @@ -22,7 +23,7 @@ Remove the docker swarm services created by Dokploy: Remove the docker volumes created by Dokploy: ```bash - docker volume rm -f dokploy-postgres-database redis-data-volume + docker volume remove -f dokploy dokploy-postgres dokploy-redis ``` @@ -32,7 +33,21 @@ Remove the docker volumes created by Dokploy: Remove the docker network created by Dokploy: ```bash - docker network rm -f dokploy-network + docker network remove -f dokploy-network + ``` + + + + + +Docker cleanup to remove leftovers: + + ```bash + docker container prune --force + docker image prune --all --force + docker volume prune --all --force + docker builder prune --all --force + docker system prune --all --volumes --force ``` diff --git a/apps/docs/generate-docs.mjs b/apps/docs/generate-docs.mjs index fc6f488..ba639a7 100644 --- a/apps/docs/generate-docs.mjs +++ b/apps/docs/generate-docs.mjs @@ -2,7 +2,7 @@ import { generateFiles } from "fumadocs-openapi"; try { void generateFiles({ - input: ["./api.json"], + input: ["./public/openapi.json"], output: "./content/docs/api/generated", per: "tag", name: (tag, name) => { @@ -10,6 +10,7 @@ try { return `reference-${name}`; }, }); + console.log("Done"); } catch (error) { console.error(error); } diff --git a/apps/docs/lib/source.ts b/apps/docs/lib/source.ts index 5593e67..d588396 100644 --- a/apps/docs/lib/source.ts +++ b/apps/docs/lib/source.ts @@ -5,13 +5,13 @@ import { createOpenAPI } from "fumadocs-openapi/server"; import { attachFile } from "fumadocs-openapi/server"; export const source = loader({ - baseUrl: "/docs", - source: createMDXSource(docs, meta), - // pageTree: { - // attachFile, - // }, + baseUrl: "/docs", + source: createMDXSource(docs, meta), + // pageTree: { + // attachFile, + // }, }); export const openapi = createOpenAPI({ - // options + // options }); diff --git a/apps/docs/package.json b/apps/docs/package.json index 5ef7cc9..f15250f 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -7,7 +7,8 @@ "dev": "TURBOPACK=1 next dev", "start": "next start", "postinstall": "fumadocs-mdx", - "build:docs": "node generate-docs.mjs", + "fix-openapi": "node scripts/fix-openapi.mjs", + "build:docs": "npm run fix-openapi && node generate-docs.mjs", "typecheck": "tsc --noEmit" }, "dependencies": { diff --git a/apps/docs/public/assets/file-mount-configuration.webp b/apps/docs/public/assets/file-mount-configuration.webp index ad3a4be..7db65fe 100644 Binary files a/apps/docs/public/assets/file-mount-configuration.webp and b/apps/docs/public/assets/file-mount-configuration.webp differ diff --git a/apps/docs/public/openapi.json b/apps/docs/public/openapi.json new file mode 100644 index 0000000..6f587ab --- /dev/null +++ b/apps/docs/public/openapi.json @@ -0,0 +1,23476 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "Dokploy API", + "description": "Complete API documentation for Dokploy - Deploy applications, manage databases, and orchestrate your infrastructure. This API allows you to programmatically manage all aspects of your Dokploy instance.", + "version": "1.0.0", + "contact": { + "name": "Dokploy Team", + "url": "https://dokploy.com" + }, + "license": { + "name": "Apache 2.0", + "url": "https://github.com/dokploy/dokploy/blob/canary/LICENSE" + } + }, + "servers": [ + { + "url": "https://your-dokploy-instance.com/api" + } + ], + "paths": { + "/admin.setupMonitoring": { + "post": { + "operationId": "admin-setupMonitoring", + "tags": [ + "admin" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "metricsConfig": { + "type": "object", + "properties": { + "server": { + "type": "object", + "properties": { + "refreshRate": { + "type": "number", + "minimum": 2 + }, + "port": { + "type": "number", + "minimum": 1 + }, + "token": { + "type": "string" + }, + "urlCallback": { + "type": "string", + "format": "uri" + }, + "retentionDays": { + "type": "number", + "minimum": 1 + }, + "cronJob": { + "type": "string", + "minLength": 1 + }, + "thresholds": { + "type": "object", + "properties": { + "cpu": { + "type": "number", + "minimum": 0 + }, + "memory": { + "type": "number", + "minimum": 0 + } + }, + "required": [ + "cpu", + "memory" + ], + "additionalProperties": false + } + }, + "required": [ + "refreshRate", + "port", + "token", + "urlCallback", + "retentionDays", + "cronJob", + "thresholds" + ], + "additionalProperties": false + }, + "containers": { + "type": "object", + "properties": { + "refreshRate": { + "type": "number", + "minimum": 2 + }, + "services": { + "type": "object", + "properties": { + "include": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "refreshRate", + "services" + ], + "additionalProperties": false + } + }, + "required": [ + "server", + "containers" + ], + "additionalProperties": false + } + }, + "required": [ + "metricsConfig" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.getContainers": { + "get": { + "operationId": "docker-getContainers", + "tags": [ + "docker" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.restartContainer": { + "post": { + "operationId": "docker-restartContainer", + "tags": [ + "docker" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "containerId": { + "type": "string", + "minLength": 1, + "pattern": "^[a-zA-Z0-9.\\-_]+$" + } + }, + "required": [ + "containerId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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, + "pattern": "^[a-zA-Z0-9.\\-_]+$" + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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, + "pattern": "^[a-zA-Z0-9.\\-_]+$" + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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, + "pattern": "^[a-zA-Z0-9.\\-_]+$" + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": [ + "standalone", + "swarm" + ] + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.getStackContainersByAppName": { + "get": { + "operationId": "docker-getStackContainersByAppName", + "tags": [ + "docker" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "appName", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1, + "pattern": "^[a-zA-Z0-9.\\-_]+$" + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/docker.getServiceContainersByAppName": { + "get": { + "operationId": "docker-getServiceContainersByAppName", + "tags": [ + "docker" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "appName", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1, + "pattern": "^[a-zA-Z0-9.\\-_]+$" + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "env": { + "type": "string" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/project.all": { + "get": { + "operationId": "project-all", + "tags": [ + "project" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "projectId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "env": { + "type": "string" + } + }, + "required": [ + "projectId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/project.duplicate": { + "post": { + "operationId": "project-duplicate", + "tags": [ + "project" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "sourceEnvironmentId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "includeServices": { + "type": "boolean", + "default": true + }, + "selectedServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "application", + "postgres", + "mariadb", + "mongo", + "mysql", + "redis", + "compose" + ] + } + }, + "required": [ + "id", + "type" + ], + "additionalProperties": false + } + }, + "duplicateInSameProject": { + "type": "boolean", + "default": false + } + }, + "required": [ + "sourceEnvironmentId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "environmentId": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "environmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "minLength": 1 + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "applicationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "buildSecrets": { + "type": "string", + "nullable": true + } + }, + "required": [ + "applicationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "railpack" + ] + }, + "dockerfile": { + "type": "string", + "nullable": true + }, + "dockerContextPath": { + "type": "string", + "nullable": true + }, + "dockerBuildStage": { + "type": "string", + "nullable": true + }, + "herokuVersion": { + "type": "string", + "nullable": true + }, + "railpackVersion": { + "type": "string", + "nullable": true + }, + "publishDirectory": { + "type": "string", + "nullable": true + }, + "isStaticSpa": { + "type": "boolean", + "nullable": true + } + }, + "required": [ + "applicationId", + "buildType", + "dockerContextPath", + "dockerBuildStage" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "watchPaths": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "enableSubmodules": { + "type": "boolean" + }, + "triggerType": { + "type": "string", + "enum": [ + "push", + "tag" + ], + "default": "push" + } + }, + "required": [ + "applicationId", + "owner", + "githubId", + "enableSubmodules" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "watchPaths": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "enableSubmodules": { + "type": "boolean" + } + }, + "required": [ + "applicationId", + "gitlabBranch", + "gitlabBuildPath", + "gitlabOwner", + "gitlabRepository", + "gitlabId", + "gitlabProjectId", + "gitlabPathNamespace", + "enableSubmodules" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "watchPaths": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "enableSubmodules": { + "type": "boolean" + } + }, + "required": [ + "bitbucketBranch", + "bitbucketBuildPath", + "bitbucketOwner", + "bitbucketRepository", + "bitbucketId", + "applicationId", + "enableSubmodules" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveGiteaProvider": { + "post": { + "operationId": "application-saveGiteaProvider", + "tags": [ + "application" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "giteaBranch": { + "type": "string", + "nullable": true + }, + "giteaBuildPath": { + "type": "string", + "nullable": true + }, + "giteaOwner": { + "type": "string", + "nullable": true + }, + "giteaRepository": { + "type": "string", + "nullable": true + }, + "giteaId": { + "type": "string", + "nullable": true + }, + "watchPaths": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "enableSubmodules": { + "type": "boolean" + } + }, + "required": [ + "applicationId", + "giteaBranch", + "giteaBuildPath", + "giteaOwner", + "giteaRepository", + "giteaId", + "enableSubmodules" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "registryUrl": { + "type": "string", + "nullable": true + } + }, + "required": [ + "applicationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.saveGitProvider": { + "post": { + "operationId": "application-saveGitProvider", + "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 + }, + "watchPaths": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "enableSubmodules": { + "type": "boolean" + }, + "customGitSSHKeyId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "applicationId", + "enableSubmodules" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.disconnectGitProvider": { + "post": { + "operationId": "application-disconnectGitProvider", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "previewEnv": { + "type": "string", + "nullable": true + }, + "watchPaths": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "previewBuildArgs": { + "type": "string", + "nullable": true + }, + "previewBuildSecrets": { + "type": "string", + "nullable": true + }, + "previewLabels": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "previewWildcard": { + "type": "string", + "nullable": true + }, + "previewPort": { + "type": "number", + "nullable": true + }, + "previewHttps": { + "type": "boolean" + }, + "previewPath": { + "type": "string", + "nullable": true + }, + "previewCertificateType": { + "type": "string", + "enum": [ + "letsencrypt", + "none", + "custom" + ] + }, + "previewCustomCertResolver": { + "type": "string", + "nullable": true + }, + "previewLimit": { + "type": "number", + "nullable": true + }, + "isPreviewDeploymentsActive": { + "type": "boolean", + "nullable": true + }, + "previewRequireCollaboratorPermissions": { + "type": "boolean", + "nullable": true + }, + "rollbackActive": { + "type": "boolean", + "nullable": true + }, + "buildArgs": { + "type": "string", + "nullable": true + }, + "buildSecrets": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "string", + "nullable": true + }, + "memoryLimit": { + "type": "string", + "nullable": true + }, + "cpuReservation": { + "type": "string", + "nullable": true + }, + "cpuLimit": { + "type": "string", + "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", + "gitlab", + "bitbucket", + "gitea", + "drop" + ] + }, + "cleanCache": { + "type": "boolean", + "nullable": true + }, + "repository": { + "type": "string", + "nullable": true + }, + "owner": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "buildPath": { + "type": "string", + "nullable": true + }, + "triggerType": { + "type": "string", + "enum": [ + "push", + "tag" + ], + "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 + }, + "giteaRepository": { + "type": "string", + "nullable": true + }, + "giteaOwner": { + "type": "string", + "nullable": true + }, + "giteaBranch": { + "type": "string", + "nullable": true + }, + "giteaBuildPath": { + "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 + }, + "registryUrl": { + "type": "string", + "nullable": true + }, + "customGitUrl": { + "type": "string", + "nullable": true + }, + "customGitBranch": { + "type": "string", + "nullable": true + }, + "customGitBuildPath": { + "type": "string", + "nullable": true + }, + "customGitSSHKeyId": { + "type": "string", + "nullable": true + }, + "enableSubmodules": { + "type": "boolean" + }, + "dockerfile": { + "type": "string", + "nullable": true + }, + "dockerContextPath": { + "type": "string", + "nullable": true + }, + "dockerBuildStage": { + "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 + }, + "stopGracePeriodSwarm": { + "type": "integer", + "nullable": true + }, + "endpointSpecSwarm": { + "type": "object", + "properties": { + "Mode": { + "type": "string" + }, + "Ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Protocol": { + "type": "string" + }, + "TargetPort": { + "type": "number" + }, + "PublishedPort": { + "type": "number" + }, + "PublishMode": { + "type": "string" + } + }, + "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", + "railpack" + ] + }, + "railpackVersion": { + "type": "string", + "nullable": true + }, + "herokuVersion": { + "type": "string", + "nullable": true + }, + "publishDirectory": { + "type": "string", + "nullable": true + }, + "isStaticSpa": { + "type": "boolean", + "nullable": true + }, + "createdAt": { + "type": "string" + }, + "registryId": { + "type": "string", + "nullable": true + }, + "environmentId": { + "type": "string" + }, + "githubId": { + "type": "string", + "nullable": true + }, + "gitlabId": { + "type": "string", + "nullable": true + }, + "giteaId": { + "type": "string", + "nullable": true + }, + "bitbucketId": { + "type": "string", + "nullable": true + }, + "buildServerId": { + "type": "string", + "nullable": true + }, + "buildRegistryId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "applicationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "minLength": 1 + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "applicationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.killBuild": { + "post": { + "operationId": "application-killBuild", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.move": { + "post": { + "operationId": "application-move", + "tags": [ + "application" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "applicationId": { + "type": "string" + }, + "targetEnvironmentId": { + "type": "string" + } + }, + "required": [ + "applicationId", + "targetEnvironmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/application.cancelDeployment": { + "post": { + "operationId": "application-cancelDeployment", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "environmentId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "databaseRootPassword": { + "type": "string", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "environmentId", + "databaseName", + "databaseUser", + "databasePassword", + "databaseRootPassword" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "databaseRootPassword": { + "type": "string", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "dockerImage": { + "type": "string", + "default": "mysql:8" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "string", + "nullable": true + }, + "memoryLimit": { + "type": "string", + "nullable": true + }, + "cpuReservation": { + "type": "string", + "nullable": true + }, + "cpuLimit": { + "type": "string", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": [ + "idle", + "running", + "done", + "error" + ] + }, + "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 + }, + "stopGracePeriodSwarm": { + "type": "integer", + "nullable": true + }, + "endpointSpecSwarm": { + "type": "object", + "properties": { + "Mode": { + "type": "string" + }, + "Ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Protocol": { + "type": "string" + }, + "TargetPort": { + "type": "number" + }, + "PublishedPort": { + "type": "number" + }, + "PublishMode": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false, + "nullable": true + }, + "replicas": { + "type": "number" + }, + "createdAt": { + "type": "string" + }, + "environmentId": { + "type": "string" + } + }, + "required": [ + "mysqlId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.move": { + "post": { + "operationId": "mysql-move", + "tags": [ + "mysql" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mysqlId": { + "type": "string" + }, + "targetEnvironmentId": { + "type": "string" + } + }, + "required": [ + "mysqlId", + "targetEnvironmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mysql.rebuild": { + "post": { + "operationId": "mysql-rebuild", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "dockerImage": { + "type": "string", + "default": "postgres:15" + }, + "environmentId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "databaseName", + "databaseUser", + "databasePassword", + "environmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "description": { + "type": "string", + "nullable": true + }, + "dockerImage": { + "type": "string", + "default": "postgres:15" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "string", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "memoryLimit": { + "type": "string", + "nullable": true + }, + "cpuReservation": { + "type": "string", + "nullable": true + }, + "cpuLimit": { + "type": "string", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": [ + "idle", + "running", + "done", + "error" + ] + }, + "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 + }, + "stopGracePeriodSwarm": { + "type": "integer", + "nullable": true + }, + "endpointSpecSwarm": { + "type": "object", + "properties": { + "Mode": { + "type": "string" + }, + "Ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Protocol": { + "type": "string" + }, + "TargetPort": { + "type": "number" + }, + "PublishedPort": { + "type": "number" + }, + "PublishMode": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false, + "nullable": true + }, + "replicas": { + "type": "number" + }, + "createdAt": { + "type": "string" + }, + "environmentId": { + "type": "string" + } + }, + "required": [ + "postgresId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.move": { + "post": { + "operationId": "postgres-move", + "tags": [ + "postgres" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "postgresId": { + "type": "string" + }, + "targetEnvironmentId": { + "type": "string" + } + }, + "required": [ + "postgresId", + "targetEnvironmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/postgres.rebuild": { + "post": { + "operationId": "postgres-rebuild", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "environmentId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "databasePassword", + "environmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": "string", + "nullable": true + }, + "memoryLimit": { + "type": "string", + "nullable": true + }, + "cpuReservation": { + "type": "string", + "nullable": true + }, + "cpuLimit": { + "type": "string", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "createdAt": { + "type": "string" + }, + "applicationStatus": { + "type": "string", + "enum": [ + "idle", + "running", + "done", + "error" + ] + }, + "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 + }, + "stopGracePeriodSwarm": { + "type": "integer", + "nullable": true + }, + "endpointSpecSwarm": { + "type": "object", + "properties": { + "Mode": { + "type": "string" + }, + "Ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Protocol": { + "type": "string" + }, + "TargetPort": { + "type": "number" + }, + "PublishedPort": { + "type": "number" + }, + "PublishMode": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false, + "nullable": true + }, + "replicas": { + "type": "number" + }, + "environmentId": { + "type": "string" + } + }, + "required": [ + "redisId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.move": { + "post": { + "operationId": "redis-move", + "tags": [ + "redis" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redisId": { + "type": "string" + }, + "targetEnvironmentId": { + "type": "string" + } + }, + "required": [ + "redisId", + "targetEnvironmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/redis.rebuild": { + "post": { + "operationId": "redis-rebuild", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "environmentId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "serverId": { + "type": "string", + "nullable": true + }, + "replicaSets": { + "type": "boolean", + "default": false, + "nullable": true + } + }, + "required": [ + "name", + "appName", + "environmentId", + "databaseUser", + "databasePassword" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "dockerImage": { + "type": "string", + "default": "mongo:15" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "string", + "nullable": true + }, + "memoryLimit": { + "type": "string", + "nullable": true + }, + "cpuReservation": { + "type": "string", + "nullable": true + }, + "cpuLimit": { + "type": "string", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": [ + "idle", + "running", + "done", + "error" + ] + }, + "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 + }, + "stopGracePeriodSwarm": { + "type": "integer", + "nullable": true + }, + "endpointSpecSwarm": { + "type": "object", + "properties": { + "Mode": { + "type": "string" + }, + "Ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Protocol": { + "type": "string" + }, + "TargetPort": { + "type": "number" + }, + "PublishedPort": { + "type": "number" + }, + "PublishMode": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false, + "nullable": true + }, + "replicas": { + "type": "number" + }, + "createdAt": { + "type": "string" + }, + "environmentId": { + "type": "string" + }, + "replicaSets": { + "type": "boolean", + "default": false, + "nullable": true + } + }, + "required": [ + "mongoId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.move": { + "post": { + "operationId": "mongo-move", + "tags": [ + "mongo" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mongoId": { + "type": "string" + }, + "targetEnvironmentId": { + "type": "string" + } + }, + "required": [ + "mongoId", + "targetEnvironmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mongo.rebuild": { + "post": { + "operationId": "mongo-rebuild", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "environmentId": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "databaseName": { + "type": "string", + "minLength": 1 + }, + "databaseUser": { + "type": "string", + "minLength": 1 + }, + "databasePassword": { + "type": "string", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "appName", + "databaseRootPassword", + "environmentId", + "databaseName", + "databaseUser", + "databasePassword" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "databaseRootPassword": { + "type": "string", + "pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$" + }, + "dockerImage": { + "type": "string", + "default": "mariadb:6" + }, + "command": { + "type": "string", + "nullable": true + }, + "env": { + "type": "string", + "nullable": true + }, + "memoryReservation": { + "type": "string", + "nullable": true + }, + "memoryLimit": { + "type": "string", + "nullable": true + }, + "cpuReservation": { + "type": "string", + "nullable": true + }, + "cpuLimit": { + "type": "string", + "nullable": true + }, + "externalPort": { + "type": "number", + "nullable": true + }, + "applicationStatus": { + "type": "string", + "enum": [ + "idle", + "running", + "done", + "error" + ] + }, + "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 + }, + "stopGracePeriodSwarm": { + "type": "integer", + "nullable": true + }, + "endpointSpecSwarm": { + "type": "object", + "properties": { + "Mode": { + "type": "string" + }, + "Ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Protocol": { + "type": "string" + }, + "TargetPort": { + "type": "number" + }, + "PublishedPort": { + "type": "number" + }, + "PublishMode": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false, + "nullable": true + }, + "replicas": { + "type": "number" + }, + "createdAt": { + "type": "string" + }, + "environmentId": { + "type": "string" + } + }, + "required": [ + "mariadbId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.move": { + "post": { + "operationId": "mariadb-move", + "tags": [ + "mariadb" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mariadbId": { + "type": "string" + }, + "targetEnvironmentId": { + "type": "string" + } + }, + "required": [ + "mariadbId", + "targetEnvironmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mariadb.rebuild": { + "post": { + "operationId": "mariadb-rebuild", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "environmentId": { + "type": "string" + }, + "composeType": { + "type": "string", + "enum": [ + "docker-compose", + "stack" + ] + }, + "appName": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + }, + "composeFile": { + "type": "string" + } + }, + "required": [ + "name", + "environmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "gitea", + "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 + }, + "giteaRepository": { + "type": "string", + "nullable": true + }, + "giteaOwner": { + "type": "string", + "nullable": true + }, + "giteaBranch": { + "type": "string", + "nullable": true + }, + "customGitUrl": { + "type": "string", + "nullable": true + }, + "customGitBranch": { + "type": "string", + "nullable": true + }, + "customGitSSHKeyId": { + "type": "string", + "nullable": true + }, + "command": { + "type": "string" + }, + "enableSubmodules": { + "type": "boolean" + }, + "composePath": { + "type": "string", + "minLength": 1 + }, + "suffix": { + "type": "string" + }, + "randomize": { + "type": "boolean" + }, + "isolatedDeployment": { + "type": "boolean" + }, + "isolatedDeploymentsVolume": { + "type": "boolean" + }, + "triggerType": { + "type": "string", + "enum": [ + "push", + "tag" + ], + "nullable": true + }, + "composeStatus": { + "type": "string", + "enum": [ + "idle", + "running", + "done", + "error" + ] + }, + "environmentId": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "watchPaths": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "githubId": { + "type": "string", + "nullable": true + }, + "gitlabId": { + "type": "string", + "nullable": true + }, + "bitbucketId": { + "type": "string", + "nullable": true + }, + "giteaId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "composeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "deleteVolumes": { + "type": "boolean" + } + }, + "required": [ + "composeId", + "deleteVolumes" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.killBuild": { + "post": { + "operationId": "compose-killBuild", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.loadMountsByService": { + "get": { + "operationId": "compose-loadMountsByService", + "tags": [ + "compose" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "composeId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "serviceName", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "suffix": { + "type": "string" + } + }, + "required": [ + "composeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.isolatedDeployment": { + "post": { + "operationId": "compose-isolatedDeployment", + "tags": [ + "compose" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string", + "minLength": 1 + }, + "suffix": { + "type": "string" + } + }, + "required": [ + "composeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "composeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "composeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.start": { + "post": { + "operationId": "compose-start", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "environmentId": { + "type": "string" + }, + "serverId": { + "type": "string" + }, + "id": { + "type": "string" + }, + "baseUrl": { + "type": "string" + } + }, + "required": [ + "environmentId", + "id" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.templates": { + "get": { + "operationId": "compose-templates", + "tags": [ + "compose" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "baseUrl", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.getTags": { + "get": { + "operationId": "compose-getTags", + "tags": [ + "compose" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "baseUrl", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.disconnectGitProvider": { + "post": { + "operationId": "compose-disconnectGitProvider", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.move": { + "post": { + "operationId": "compose-move", + "tags": [ + "compose" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "composeId": { + "type": "string" + }, + "targetEnvironmentId": { + "type": "string" + } + }, + "required": [ + "composeId", + "targetEnvironmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.processTemplate": { + "post": { + "operationId": "compose-processTemplate", + "tags": [ + "compose" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "base64": { + "type": "string" + }, + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "base64", + "composeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.import": { + "post": { + "operationId": "compose-import", + "tags": [ + "compose" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "base64": { + "type": "string" + }, + "composeId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "base64", + "composeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/compose.cancelDeployment": { + "post": { + "operationId": "compose-cancelDeployment", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.all": { + "get": { + "operationId": "user-all", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.one": { + "get": { + "operationId": "user-one", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "userId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.get": { + "get": { + "operationId": "user-get", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.haveRootAccess": { + "get": { + "operationId": "user-haveRootAccess", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.getBackups": { + "get": { + "operationId": "user-getBackups", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.getServerMetrics": { + "get": { + "operationId": "user-getServerMetrics", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.update": { + "post": { + "operationId": "user-update", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string" + }, + "isRegistered": { + "type": "boolean" + }, + "expirationDate": { + "type": "string" + }, + "createdAt2": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "twoFactorEnabled": { + "type": "boolean", + "nullable": true + }, + "email": { + "type": "string", + "format": "email", + "minLength": 1 + }, + "emailVerified": { + "type": "boolean" + }, + "image": { + "type": "string", + "nullable": true + }, + "banned": { + "type": "boolean", + "nullable": true + }, + "banReason": { + "type": "string", + "nullable": true + }, + "banExpires": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "serverIp": { + "type": "string", + "nullable": true + }, + "certificateType": { + "type": "string", + "enum": [ + "letsencrypt", + "none", + "custom" + ] + }, + "https": { + "type": "boolean" + }, + "host": { + "type": "string", + "nullable": true + }, + "letsEncryptEmail": { + "type": "string", + "nullable": true + }, + "sshPrivateKey": { + "type": "string", + "nullable": true + }, + "enableDockerCleanup": { + "type": "boolean" + }, + "logCleanupCron": { + "type": "string", + "nullable": true + }, + "enablePaidFeatures": { + "type": "boolean" + }, + "allowImpersonation": { + "type": "boolean" + }, + "metricsConfig": { + "type": "object", + "properties": { + "server": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "Dokploy", + "Remote" + ] + }, + "refreshRate": { + "type": "number" + }, + "port": { + "type": "number" + }, + "token": { + "type": "string" + }, + "urlCallback": { + "type": "string" + }, + "retentionDays": { + "type": "number" + }, + "cronJob": { + "type": "string" + }, + "thresholds": { + "type": "object", + "properties": { + "cpu": { + "type": "number" + }, + "memory": { + "type": "number" + } + }, + "required": [ + "cpu", + "memory" + ], + "additionalProperties": false + } + }, + "required": [ + "type", + "refreshRate", + "port", + "token", + "urlCallback", + "retentionDays", + "cronJob", + "thresholds" + ], + "additionalProperties": false + }, + "containers": { + "type": "object", + "properties": { + "refreshRate": { + "type": "number" + }, + "services": { + "type": "object", + "properties": { + "include": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "include", + "exclude" + ], + "additionalProperties": false + } + }, + "required": [ + "refreshRate", + "services" + ], + "additionalProperties": false + } + }, + "required": [ + "server", + "containers" + ], + "additionalProperties": false + }, + "cleanupCacheApplications": { + "type": "boolean" + }, + "cleanupCacheOnPreviews": { + "type": "boolean" + }, + "cleanupCacheOnCompose": { + "type": "boolean" + }, + "stripeCustomerId": { + "type": "string", + "nullable": true + }, + "stripeSubscriptionId": { + "type": "string", + "nullable": true + }, + "serversQuantity": { + "type": "number" + }, + "password": { + "type": "string" + }, + "currentPassword": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.getUserByToken": { + "get": { + "operationId": "user-getUserByToken", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "token", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.getMetricsToken": { + "get": { + "operationId": "user-getMetricsToken", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.remove": { + "post": { + "operationId": "user-remove", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "userId": { + "type": "string" + } + }, + "required": [ + "userId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.assignPermissions": { + "post": { + "operationId": "user-assignPermissions", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "accessedProjects": { + "type": "array", + "items": { + "type": "string" + } + }, + "accessedEnvironments": { + "type": "array", + "items": { + "type": "string" + } + }, + "accessedServices": { + "type": "array", + "items": { + "type": "string" + } + }, + "canCreateProjects": { + "type": "boolean" + }, + "canCreateServices": { + "type": "boolean" + }, + "canDeleteProjects": { + "type": "boolean" + }, + "canDeleteServices": { + "type": "boolean" + }, + "canAccessToDocker": { + "type": "boolean" + }, + "canAccessToTraefikFiles": { + "type": "boolean" + }, + "canAccessToAPI": { + "type": "boolean" + }, + "canAccessToSSHKeys": { + "type": "boolean" + }, + "canAccessToGitProviders": { + "type": "boolean" + }, + "canDeleteEnvironments": { + "type": "boolean" + }, + "canCreateEnvironments": { + "type": "boolean" + } + }, + "required": [ + "id", + "accessedProjects", + "accessedEnvironments", + "accessedServices", + "canCreateProjects", + "canCreateServices", + "canDeleteProjects", + "canDeleteServices", + "canAccessToDocker", + "canAccessToTraefikFiles", + "canAccessToAPI", + "canAccessToSSHKeys", + "canAccessToGitProviders", + "canDeleteEnvironments", + "canCreateEnvironments" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.getInvitations": { + "get": { + "operationId": "user-getInvitations", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.getContainerMetrics": { + "get": { + "operationId": "user-getContainerMetrics", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "appName", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dataPoints", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.generateToken": { + "post": { + "operationId": "user-generateToken", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.deleteApiKey": { + "post": { + "operationId": "user-deleteApiKey", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "apiKeyId": { + "type": "string" + } + }, + "required": [ + "apiKeyId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.createApiKey": { + "post": { + "operationId": "user-createApiKey", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "prefix": { + "type": "string" + }, + "expiresIn": { + "type": "number" + }, + "metadata": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + } + }, + "required": [ + "organizationId" + ], + "additionalProperties": false + }, + "rateLimitEnabled": { + "type": "boolean" + }, + "rateLimitTimeWindow": { + "type": "number" + }, + "rateLimitMax": { + "type": "number" + }, + "remaining": { + "type": "number" + }, + "refillAmount": { + "type": "number" + }, + "refillInterval": { + "type": "number" + } + }, + "required": [ + "name", + "metadata" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.checkUserOrganizations": { + "get": { + "operationId": "user-checkUserOrganizations", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "userId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/user.sendInvitation": { + "post": { + "operationId": "user-sendInvitation", + "tags": [ + "user" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "invitationId": { + "type": "string", + "minLength": 1 + }, + "notificationId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "invitationId", + "notificationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "custom" + ] + }, + "customCertResolver": { + "type": "string", + "nullable": true + }, + "composeId": { + "type": "string", + "nullable": true + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "domainType": { + "type": "string", + "enum": [ + "compose", + "application", + "preview" + ], + "nullable": true + }, + "previewDeploymentId": { + "type": "string", + "nullable": true + }, + "internalPath": { + "type": "string", + "nullable": true + }, + "stripPath": { + "type": "boolean" + } + }, + "required": [ + "host" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "appName" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.canGenerateTraefikMeDomains": { + "get": { + "operationId": "domain-canGenerateTraefikMeDomains", + "tags": [ + "domain" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "custom" + ] + }, + "customCertResolver": { + "type": "string", + "nullable": true + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "domainType": { + "type": "string", + "enum": [ + "compose", + "application", + "preview" + ], + "nullable": true + }, + "internalPath": { + "type": "string", + "nullable": true + }, + "stripPath": { + "type": "boolean" + }, + "domainId": { + "type": "string" + } + }, + "required": [ + "host", + "domainId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/domain.validateDomain": { + "post": { + "operationId": "domain-validateDomain", + "tags": [ + "domain" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "serverIp": { + "type": "string" + } + }, + "required": [ + "domain" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "provider": { + "type": "string", + "nullable": true + }, + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "region": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "secretAccessKey": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "name", + "provider", + "accessKey", + "bucket", + "region", + "endpoint", + "secretAccessKey" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "provider": { + "type": "string", + "nullable": true + }, + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "region": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "secretAccessKey": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "name", + "provider", + "accessKey", + "bucket", + "region", + "endpoint", + "secretAccessKey" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/destination.all": { + "get": { + "operationId": "destination-all", + "tags": [ + "destination" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "provider": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "name", + "accessKey", + "bucket", + "region", + "endpoint", + "secretAccessKey", + "destinationId", + "provider" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "keepLatestCount": { + "type": "number", + "nullable": true + }, + "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", + "web-server" + ] + }, + "userId": { + "type": "string", + "nullable": true + }, + "backupType": { + "type": "string", + "enum": [ + "database", + "compose" + ] + }, + "composeId": { + "type": "string", + "nullable": true + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "metadata": { + "nullable": true + } + }, + "required": [ + "schedule", + "prefix", + "destinationId", + "database", + "databaseType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "keepLatestCount": { + "type": "number", + "nullable": true + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "metadata": { + "nullable": true + }, + "databaseType": { + "type": "string", + "enum": [ + "postgres", + "mariadb", + "mysql", + "mongo", + "web-server" + ] + } + }, + "required": [ + "schedule", + "prefix", + "backupId", + "destinationId", + "database", + "serviceName", + "databaseType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.manualBackupCompose": { + "post": { + "operationId": "backup-manualBackupCompose", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.manualBackupWebServer": { + "post": { + "operationId": "backup-manualBackupWebServer", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/backup.listBackupFiles": { + "get": { + "operationId": "backup-listBackupFiles", + "tags": [ + "backup" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "destinationId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "search", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/deployment.allByServer": { + "get": { + "operationId": "deployment-allByServer", + "tags": [ + "deployment" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/deployment.allByType": { + "get": { + "operationId": "deployment-allByType", + "tags": [ + "deployment" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "type", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": [ + "application", + "compose", + "server", + "schedule", + "previewDeployment", + "backup", + "volumeBackup" + ] + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/deployment.killProcess": { + "post": { + "operationId": "deployment-killProcess", + "tags": [ + "deployment" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "deploymentId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "deploymentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/previewDeployment.all": { + "get": { + "operationId": "previewDeployment-all", + "tags": [ + "previewDeployment" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "applicationId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/previewDeployment.delete": { + "post": { + "operationId": "previewDeployment-delete", + "tags": [ + "previewDeployment" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "previewDeploymentId": { + "type": "string" + } + }, + "required": [ + "previewDeploymentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/previewDeployment.one": { + "get": { + "operationId": "previewDeployment-one", + "tags": [ + "previewDeployment" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "previewDeploymentId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/mounts.allNamedByApplicationId": { + "get": { + "operationId": "mounts-allNamedByApplicationId", + "tags": [ + "mounts" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "applicationId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "organizationId": { + "type": "string" + }, + "serverId": { + "type": "string", + "nullable": true + } + }, + "required": [ + "name", + "certificateData", + "privateKey", + "organizationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/certificates.all": { + "get": { + "operationId": "certificates-all", + "tags": [ + "certificates" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.reloadServer": { + "post": { + "operationId": "settings-reloadServer", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanRedis": { + "post": { + "operationId": "settings-cleanRedis", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.reloadRedis": { + "post": { + "operationId": "settings-reloadRedis", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.reloadTraefik": { + "post": { + "operationId": "settings-reloadTraefik", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanUnusedImages": { + "post": { + "operationId": "settings-cleanUnusedImages", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanUnusedVolumes": { + "post": { + "operationId": "settings-cleanUnusedVolumes", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanStoppedContainers": { + "post": { + "operationId": "settings-cleanStoppedContainers", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanDockerBuilder": { + "post": { + "operationId": "settings-cleanDockerBuilder", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanDockerPrune": { + "post": { + "operationId": "settings-cleanDockerPrune", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanAll": { + "post": { + "operationId": "settings-cleanAll", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanMonitoring": { + "post": { + "operationId": "settings-cleanMonitoring", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + } + }, + "required": [ + "sshPrivateKey" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "host": { + "type": "string", + "nullable": true + }, + "certificateType": { + "type": "string", + "enum": [ + "letsencrypt", + "none", + "custom" + ] + }, + "letsEncryptEmail": { + "type": "string", + "nullable": true + }, + "https": { + "type": "boolean" + } + }, + "required": [ + "host", + "certificateType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.cleanSSHPrivateKey": { + "post": { + "operationId": "settings-cleanSSHPrivateKey", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "enableDockerCleanup" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readTraefikConfig": { + "get": { + "operationId": "settings-readTraefikConfig", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readWebServerTraefikConfig": { + "get": { + "operationId": "settings-readWebServerTraefikConfig", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readMiddlewareTraefikConfig": { + "get": { + "operationId": "settings-readMiddlewareTraefikConfig", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getUpdateData": { + "post": { + "operationId": "settings-getUpdateData", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateServer": { + "post": { + "operationId": "settings-updateServer", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getDokployVersion": { + "get": { + "operationId": "settings-getDokployVersion", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getReleaseTag": { + "get": { + "operationId": "settings-getReleaseTag", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readDirectories": { + "get": { + "operationId": "settings-readDirectories", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "path", + "traefikConfig" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getIp": { + "get": { + "operationId": "settings-getIp", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getOpenApiDocument": { + "get": { + "operationId": "settings-getOpenApiDocument", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.readTraefikEnv": { + "get": { + "operationId": "settings-readTraefikEnv", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "env" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.haveTraefikDashboardPortEnabled": { + "get": { + "operationId": "settings-haveTraefikDashboardPortEnabled", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.haveActivateRequests": { + "get": { + "operationId": "settings-haveActivateRequests", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.toggleRequests": { + "post": { + "operationId": "settings-toggleRequests", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enable": { + "type": "boolean" + } + }, + "required": [ + "enable" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.isCloud": { + "get": { + "operationId": "settings-isCloud", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.isUserSubscribed": { + "get": { + "operationId": "settings-isUserSubscribed", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.health": { + "get": { + "operationId": "settings-health", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.setupGPU": { + "post": { + "operationId": "settings-setupGPU", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.checkGPUStatus": { + "get": { + "operationId": "settings-checkGPUStatus", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateTraefikPorts": { + "post": { + "operationId": "settings-updateTraefikPorts", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string" + }, + "additionalPorts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "targetPort": { + "type": "number" + }, + "publishedPort": { + "type": "number" + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp", + "sctp" + ] + } + }, + "required": [ + "targetPort", + "publishedPort", + "protocol" + ], + "additionalProperties": false + } + } + }, + "required": [ + "additionalPorts" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getTraefikPorts": { + "get": { + "operationId": "settings-getTraefikPorts", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.updateLogCleanup": { + "post": { + "operationId": "settings-updateLogCleanup", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cronExpression": { + "type": "string", + "nullable": true + } + }, + "required": [ + "cronExpression" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getLogCleanupStatus": { + "get": { + "operationId": "settings-getLogCleanupStatus", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/settings.getDokployCloudIps": { + "get": { + "operationId": "settings-getDokployCloudIps", + "tags": [ + "settings" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "publishMode": { + "type": "string", + "enum": [ + "ingress", + "host" + ], + "default": "ingress" + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "publishMode": { + "type": "string", + "enum": [ + "ingress", + "host" + ], + "default": "ingress" + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": [ + "cloud" + ] + }, + "imagePrefix": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "registryName", + "username", + "password", + "registryUrl", + "registryType", + "imagePrefix" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "createdAt": { + "type": "string" + }, + "registryType": { + "type": "string", + "enum": [ + "cloud" + ] + }, + "organizationId": { + "type": "string", + "minLength": 1 + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "registryId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/registry.all": { + "get": { + "operationId": "registry-all", + "tags": [ + "registry" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "registryUrl": { + "type": "string" + }, + "registryType": { + "type": "string", + "enum": [ + "cloud" + ] + }, + "imagePrefix": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "username", + "password", + "registryUrl", + "registryType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/cluster.getNodes": { + "get": { + "operationId": "cluster-getNodes", + "tags": [ + "cluster" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "nodeId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/cluster.addWorker": { + "get": { + "operationId": "cluster-addWorker", + "tags": [ + "cluster" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/cluster.addManager": { + "get": { + "operationId": "cluster-addManager", + "tags": [ + "cluster" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "channel": { + "type": "string" + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "serverThreshold", + "webhookUrl", + "channel" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "channel": { + "type": "string" + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "slackId": { + "type": "string" + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "notificationId", + "slackId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "botToken": { + "type": "string", + "minLength": 1 + }, + "chatId": { + "type": "string", + "minLength": 1 + }, + "messageThreadId": { + "type": "string" + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "serverThreshold", + "botToken", + "chatId", + "messageThreadId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "botToken": { + "type": "string", + "minLength": 1 + }, + "chatId": { + "type": "string", + "minLength": 1 + }, + "messageThreadId": { + "type": "string" + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "telegramId": { + "type": "string", + "minLength": 1 + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "notificationId", + "telegramId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "messageThreadId": { + "type": "string" + } + }, + "required": [ + "botToken", + "chatId", + "messageThreadId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "decoration": { + "type": "boolean" + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "serverThreshold", + "webhookUrl", + "decoration" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "decoration": { + "type": "boolean" + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "discordId": { + "type": "string", + "minLength": 1 + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "notificationId", + "discordId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "decoration": { + "type": "boolean" + } + }, + "required": [ + "webhookUrl" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "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", + "serverThreshold", + "smtpServer", + "smtpPort", + "username", + "password", + "fromAddress", + "toAddresses" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "serverThreshold": { + "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 + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "notificationId", + "emailId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.all": { + "get": { + "operationId": "notification-all", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.receiveNotification": { + "post": { + "operationId": "notification-receiveNotification", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ServerType": { + "type": "string", + "enum": [ + "Dokploy", + "Remote" + ], + "default": "Dokploy" + }, + "Type": { + "type": "string", + "enum": [ + "Memory", + "CPU" + ] + }, + "Value": { + "type": "number" + }, + "Threshold": { + "type": "number" + }, + "Message": { + "type": "string" + }, + "Timestamp": { + "type": "string" + }, + "Token": { + "type": "string" + } + }, + "required": [ + "Type", + "Value", + "Threshold", + "Message", + "Timestamp", + "Token" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.createGotify": { + "post": { + "operationId": "notification-createGotify", + "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" + }, + "serverUrl": { + "type": "string", + "minLength": 1 + }, + "appToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": 1 + }, + "decoration": { + "type": "boolean" + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "serverUrl", + "appToken", + "priority", + "decoration" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updateGotify": { + "post": { + "operationId": "notification-updateGotify", + "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" + }, + "serverUrl": { + "type": "string", + "minLength": 1 + }, + "appToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": 1 + }, + "decoration": { + "type": "boolean" + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "gotifyId": { + "type": "string", + "minLength": 1 + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "notificationId", + "gotifyId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testGotifyConnection": { + "post": { + "operationId": "notification-testGotifyConnection", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverUrl": { + "type": "string", + "minLength": 1 + }, + "appToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": 1 + }, + "decoration": { + "type": "boolean" + } + }, + "required": [ + "serverUrl", + "appToken", + "priority" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.createNtfy": { + "post": { + "operationId": "notification-createNtfy", + "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" + }, + "serverUrl": { + "type": "string", + "minLength": 1 + }, + "topic": { + "type": "string", + "minLength": 1 + }, + "accessToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": 1 + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "serverUrl", + "topic", + "accessToken", + "priority" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updateNtfy": { + "post": { + "operationId": "notification-updateNtfy", + "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" + }, + "serverUrl": { + "type": "string", + "minLength": 1 + }, + "topic": { + "type": "string", + "minLength": 1 + }, + "accessToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": 1 + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "ntfyId": { + "type": "string", + "minLength": 1 + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "notificationId", + "ntfyId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testNtfyConnection": { + "post": { + "operationId": "notification-testNtfyConnection", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverUrl": { + "type": "string", + "minLength": 1 + }, + "topic": { + "type": "string", + "minLength": 1 + }, + "accessToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": 1 + } + }, + "required": [ + "serverUrl", + "topic", + "accessToken", + "priority" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.createLark": { + "post": { + "operationId": "notification-createLark", + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "appBuildError", + "databaseBackup", + "dokployRestart", + "name", + "appDeploy", + "dockerCleanup", + "serverThreshold", + "webhookUrl" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updateLark": { + "post": { + "operationId": "notification-updateLark", + "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" + }, + "serverThreshold": { + "type": "boolean" + }, + "webhookUrl": { + "type": "string", + "minLength": 1 + }, + "notificationId": { + "type": "string", + "minLength": 1 + }, + "larkId": { + "type": "string", + "minLength": 1 + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "notificationId", + "larkId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testLarkConnection": { + "post": { + "operationId": "notification-testLarkConnection", + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.getEmailProviders": { + "get": { + "operationId": "notification-getEmailProviders", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "privateKey": { + "type": "string" + }, + "publicKey": { + "type": "string" + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "name", + "privateKey", + "publicKey", + "organizationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/sshKey.all": { + "get": { + "operationId": "sshKey-all", + "tags": [ + "sshKey" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitProvider.getAll": { + "get": { + "operationId": "gitProvider-getAll", + "tags": [ + "gitProvider" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.create": { + "post": { + "operationId": "gitea-create", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "giteaId": { + "type": "string" + }, + "giteaUrl": { + "type": "string", + "minLength": 1 + }, + "redirectUri": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "gitProviderId": { + "type": "string" + }, + "accessToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "expiresAt": { + "type": "number" + }, + "scopes": { + "type": "string" + }, + "lastAuthenticatedAt": { + "type": "number" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "giteaUsername": { + "type": "string" + }, + "organizationName": { + "type": "string" + } + }, + "required": [ + "giteaUrl", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.one": { + "get": { + "operationId": "gitea-one", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "giteaId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.giteaProviders": { + "get": { + "operationId": "gitea-giteaProviders", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.getGiteaRepositories": { + "get": { + "operationId": "gitea-getGiteaRepositories", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "giteaId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.getGiteaBranches": { + "get": { + "operationId": "gitea-getGiteaBranches", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "owner", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "repositoryName", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "giteaId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.testConnection": { + "post": { + "operationId": "gitea-testConnection", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "giteaId": { + "type": "string" + }, + "organizationName": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.update": { + "post": { + "operationId": "gitea-update", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "giteaId": { + "type": "string", + "minLength": 1 + }, + "giteaUrl": { + "type": "string", + "minLength": 1 + }, + "redirectUri": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "gitProviderId": { + "type": "string" + }, + "accessToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "expiresAt": { + "type": "number" + }, + "scopes": { + "type": "string" + }, + "lastAuthenticatedAt": { + "type": "number" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "giteaUsername": { + "type": "string" + }, + "organizationName": { + "type": "string" + } + }, + "required": [ + "giteaId", + "giteaUrl", + "gitProviderId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitea.getGiteaUrl": { + "get": { + "operationId": "gitea-getGiteaUrl", + "tags": [ + "gitea" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "giteaId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "bitbucketEmail": { + "type": "string", + "format": "email" + }, + "appPassword": { + "type": "string" + }, + "apiToken": { + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/bitbucket.bitbucketProviders": { + "get": { + "operationId": "bitbucket-bitbucketProviders", + "tags": [ + "bitbucket" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "bitbucketEmail": { + "type": "string", + "format": "email" + }, + "workspaceName": { + "type": "string" + }, + "apiToken": { + "type": "string" + }, + "appPassword": { + "type": "string" + } + }, + "required": [ + "bitbucketId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "bitbucketEmail": { + "type": "string", + "format": "email" + }, + "appPassword": { + "type": "string" + }, + "apiToken": { + "type": "string" + }, + "bitbucketWorkspaceName": { + "type": "string" + }, + "gitProviderId": { + "type": "string" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "bitbucketId", + "gitProviderId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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" + }, + "gitlabUrl": { + "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" + }, + "authId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "gitlabUrl", + "authId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/gitlab.gitlabProviders": { + "get": { + "operationId": "gitlab-gitlabProviders", + "tags": [ + "gitlab" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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 + }, + "gitlabUrl": { + "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", + "gitlabUrl", + "gitProviderId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/github.githubProviders": { + "get": { + "operationId": "github-githubProviders", + "tags": [ + "github" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "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", + "minLength": 1 + }, + "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", + "githubAppName", + "gitProviderId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.create": { + "post": { + "operationId": "server-create", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "ipAddress": { + "type": "string" + }, + "port": { + "type": "number" + }, + "username": { + "type": "string" + }, + "sshKeyId": { + "type": "string", + "nullable": true + }, + "serverType": { + "type": "string", + "enum": [ + "deploy", + "build" + ] + } + }, + "required": [ + "name", + "ipAddress", + "port", + "username", + "sshKeyId", + "serverType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.one": { + "get": { + "operationId": "server-one", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.getDefaultCommand": { + "get": { + "operationId": "server-getDefaultCommand", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.all": { + "get": { + "operationId": "server-all", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.count": { + "get": { + "operationId": "server-count", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.withSSHKey": { + "get": { + "operationId": "server-withSSHKey", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.buildServers": { + "get": { + "operationId": "server-buildServers", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.setup": { + "post": { + "operationId": "server-setup", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "serverId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.validate": { + "get": { + "operationId": "server-validate", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.security": { + "get": { + "operationId": "server-security", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.setupMonitoring": { + "post": { + "operationId": "server-setupMonitoring", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string", + "minLength": 1 + }, + "metricsConfig": { + "type": "object", + "properties": { + "server": { + "type": "object", + "properties": { + "refreshRate": { + "type": "number", + "minimum": 2 + }, + "port": { + "type": "number", + "minimum": 1 + }, + "token": { + "type": "string" + }, + "urlCallback": { + "type": "string", + "format": "uri" + }, + "retentionDays": { + "type": "number", + "minimum": 1 + }, + "cronJob": { + "type": "string", + "minLength": 1 + }, + "thresholds": { + "type": "object", + "properties": { + "cpu": { + "type": "number", + "minimum": 0 + }, + "memory": { + "type": "number", + "minimum": 0 + } + }, + "required": [ + "cpu", + "memory" + ], + "additionalProperties": false + } + }, + "required": [ + "refreshRate", + "port", + "token", + "urlCallback", + "retentionDays", + "cronJob", + "thresholds" + ], + "additionalProperties": false + }, + "containers": { + "type": "object", + "properties": { + "refreshRate": { + "type": "number", + "minimum": 2 + }, + "services": { + "type": "object", + "properties": { + "include": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "refreshRate", + "services" + ], + "additionalProperties": false + } + }, + "required": [ + "server", + "containers" + ], + "additionalProperties": false + } + }, + "required": [ + "serverId", + "metricsConfig" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.remove": { + "post": { + "operationId": "server-remove", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serverId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "serverId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.update": { + "post": { + "operationId": "server-update", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "minLength": 1 + }, + "ipAddress": { + "type": "string" + }, + "port": { + "type": "number" + }, + "username": { + "type": "string" + }, + "sshKeyId": { + "type": "string", + "nullable": true + }, + "serverType": { + "type": "string", + "enum": [ + "deploy", + "build" + ] + }, + "command": { + "type": "string" + } + }, + "required": [ + "name", + "serverId", + "ipAddress", + "port", + "username", + "sshKeyId", + "serverType" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.publicIp": { + "get": { + "operationId": "server-publicIp", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.getServerTime": { + "get": { + "operationId": "server-getServerTime", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/server.getServerMetrics": { + "get": { + "operationId": "server-getServerMetrics", + "tags": [ + "server" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dataPoints", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.getProducts": { + "get": { + "operationId": "stripe-getProducts", + "tags": [ + "stripe" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.createCheckoutSession": { + "post": { + "operationId": "stripe-createCheckoutSession", + "tags": [ + "stripe" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "productId": { + "type": "string" + }, + "serverQuantity": { + "type": "number", + "minimum": 1 + }, + "isAnnual": { + "type": "boolean" + } + }, + "required": [ + "productId", + "serverQuantity", + "isAnnual" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.createCustomerPortalSession": { + "post": { + "operationId": "stripe-createCustomerPortalSession", + "tags": [ + "stripe" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/stripe.canCreateMoreServers": { + "get": { + "operationId": "stripe-canCreateMoreServers", + "tags": [ + "stripe" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/swarm.getNodes": { + "get": { + "operationId": "swarm-getNodes", + "tags": [ + "swarm" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/swarm.getNodeInfo": { + "get": { + "operationId": "swarm-getNodeInfo", + "tags": [ + "swarm" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "nodeId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/swarm.getNodeApps": { + "get": { + "operationId": "swarm-getNodeApps", + "tags": [ + "swarm" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "serverId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.one": { + "get": { + "operationId": "ai-one", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "aiId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.getModels": { + "get": { + "operationId": "ai-getModels", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "apiUrl", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "apiKey", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.create": { + "post": { + "operationId": "ai-create", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "apiUrl": { + "type": "string", + "format": "uri" + }, + "apiKey": { + "type": "string" + }, + "model": { + "type": "string", + "minLength": 1 + }, + "isEnabled": { + "type": "boolean" + } + }, + "required": [ + "name", + "apiUrl", + "apiKey", + "model", + "isEnabled" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.update": { + "post": { + "operationId": "ai-update", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "aiId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "apiUrl": { + "type": "string", + "format": "uri" + }, + "apiKey": { + "type": "string" + }, + "model": { + "type": "string", + "minLength": 1 + }, + "isEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + } + }, + "required": [ + "aiId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.getAll": { + "get": { + "operationId": "ai-getAll", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.get": { + "get": { + "operationId": "ai-get", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "aiId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.delete": { + "post": { + "operationId": "ai-delete", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "aiId": { + "type": "string" + } + }, + "required": [ + "aiId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.suggest": { + "post": { + "operationId": "ai-suggest", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "aiId": { + "type": "string" + }, + "input": { + "type": "string" + }, + "serverId": { + "type": "string" + } + }, + "required": [ + "aiId", + "input" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/ai.deploy": { + "post": { + "operationId": "ai-deploy", + "tags": [ + "ai" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "environmentId": { + "type": "string", + "minLength": 1 + }, + "id": { + "type": "string", + "minLength": 1 + }, + "dockerCompose": { + "type": "string", + "minLength": 1 + }, + "envVariables": { + "type": "string" + }, + "serverId": { + "type": "string" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "minLength": 1 + }, + "port": { + "type": "number", + "minimum": 1 + }, + "serviceName": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "host", + "port", + "serviceName" + ], + "additionalProperties": false + } + }, + "configFiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "minLength": 1 + }, + "content": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "filePath", + "content" + ], + "additionalProperties": false + } + } + }, + "required": [ + "environmentId", + "id", + "dockerCompose", + "envVariables", + "name", + "description" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.create": { + "post": { + "operationId": "organization-create", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "logo": { + "type": "string" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.all": { + "get": { + "operationId": "organization-all", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.one": { + "get": { + "operationId": "organization-one", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "organizationId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.update": { + "post": { + "operationId": "organization-update", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "logo": { + "type": "string" + } + }, + "required": [ + "organizationId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.delete": { + "post": { + "operationId": "organization-delete", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "organizationId": { + "type": "string" + } + }, + "required": [ + "organizationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.allInvitations": { + "get": { + "operationId": "organization-allInvitations", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.removeInvitation": { + "post": { + "operationId": "organization-removeInvitation", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "invitationId": { + "type": "string" + } + }, + "required": [ + "invitationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/organization.setDefault": { + "post": { + "operationId": "organization-setDefault", + "tags": [ + "organization" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "organizationId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "organizationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/schedule.create": { + "post": { + "operationId": "schedule-create", + "tags": [ + "schedule" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scheduleId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "cronExpression": { + "type": "string" + }, + "appName": { + "type": "string" + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "shellType": { + "type": "string", + "enum": [ + "bash", + "sh" + ] + }, + "scheduleType": { + "type": "string", + "enum": [ + "application", + "compose", + "server", + "dokploy-server" + ] + }, + "command": { + "type": "string" + }, + "script": { + "type": "string", + "nullable": true + }, + "applicationId": { + "type": "string", + "nullable": true + }, + "composeId": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "nullable": true + }, + "userId": { + "type": "string", + "nullable": true + }, + "enabled": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + } + }, + "required": [ + "name", + "cronExpression", + "command" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/schedule.update": { + "post": { + "operationId": "schedule-update", + "tags": [ + "schedule" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scheduleId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string" + }, + "cronExpression": { + "type": "string" + }, + "appName": { + "type": "string" + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "shellType": { + "type": "string", + "enum": [ + "bash", + "sh" + ] + }, + "scheduleType": { + "type": "string", + "enum": [ + "application", + "compose", + "server", + "dokploy-server" + ] + }, + "command": { + "type": "string" + }, + "script": { + "type": "string", + "nullable": true + }, + "applicationId": { + "type": "string", + "nullable": true + }, + "composeId": { + "type": "string", + "nullable": true + }, + "serverId": { + "type": "string", + "nullable": true + }, + "userId": { + "type": "string", + "nullable": true + }, + "enabled": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + } + }, + "required": [ + "scheduleId", + "name", + "cronExpression", + "command" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/schedule.delete": { + "post": { + "operationId": "schedule-delete", + "tags": [ + "schedule" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scheduleId": { + "type": "string" + } + }, + "required": [ + "scheduleId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/schedule.list": { + "get": { + "operationId": "schedule-list", + "tags": [ + "schedule" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scheduleType", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": [ + "application", + "compose", + "server", + "dokploy-server" + ] + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/schedule.one": { + "get": { + "operationId": "schedule-one", + "tags": [ + "schedule" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/schedule.runManually": { + "post": { + "operationId": "schedule-runManually", + "tags": [ + "schedule" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scheduleId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "scheduleId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/rollback.delete": { + "post": { + "operationId": "rollback-delete", + "tags": [ + "rollback" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "rollbackId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "rollbackId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/rollback.rollback": { + "post": { + "operationId": "rollback-rollback", + "tags": [ + "rollback" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "rollbackId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "rollbackId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/volumeBackups.list": { + "get": { + "operationId": "volumeBackups-list", + "tags": [ + "volumeBackups" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "volumeBackupType", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": [ + "application", + "postgres", + "mysql", + "mariadb", + "mongo", + "redis", + "compose" + ] + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/volumeBackups.create": { + "post": { + "operationId": "volumeBackups-create", + "tags": [ + "volumeBackups" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "volumeName": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "serviceType": { + "type": "string", + "enum": [ + "application", + "postgres", + "mysql", + "mariadb", + "mongo", + "redis", + "compose" + ] + }, + "appName": { + "type": "string" + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "turnOff": { + "type": "boolean" + }, + "cronExpression": { + "type": "string" + }, + "keepLatestCount": { + "type": "number", + "nullable": true + }, + "enabled": { + "type": "boolean", + "nullable": true + }, + "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 + }, + "createdAt": { + "type": "string" + }, + "destinationId": { + "type": "string" + } + }, + "required": [ + "name", + "volumeName", + "prefix", + "cronExpression", + "destinationId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/volumeBackups.one": { + "get": { + "operationId": "volumeBackups-one", + "tags": [ + "volumeBackups" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "volumeBackupId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/volumeBackups.delete": { + "post": { + "operationId": "volumeBackups-delete", + "tags": [ + "volumeBackups" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "volumeBackupId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "volumeBackupId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/volumeBackups.update": { + "post": { + "operationId": "volumeBackups-update", + "tags": [ + "volumeBackups" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "volumeName": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "serviceType": { + "type": "string", + "enum": [ + "application", + "postgres", + "mysql", + "mariadb", + "mongo", + "redis", + "compose" + ] + }, + "appName": { + "type": "string" + }, + "serviceName": { + "type": "string", + "nullable": true + }, + "turnOff": { + "type": "boolean" + }, + "cronExpression": { + "type": "string" + }, + "keepLatestCount": { + "type": "number", + "nullable": true + }, + "enabled": { + "type": "boolean", + "nullable": true + }, + "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 + }, + "createdAt": { + "type": "string" + }, + "destinationId": { + "type": "string" + }, + "volumeBackupId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "name", + "volumeName", + "prefix", + "cronExpression", + "destinationId", + "volumeBackupId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/volumeBackups.runManually": { + "post": { + "operationId": "volumeBackups-runManually", + "tags": [ + "volumeBackups" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "volumeBackupId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "volumeBackupId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/environment.create": { + "post": { + "operationId": "environment-create", + "tags": [ + "environment" + ], + "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" + } + }, + "required": [ + "name", + "projectId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/environment.one": { + "get": { + "operationId": "environment-one", + "tags": [ + "environment" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "environmentId", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/environment.byProjectId": { + "get": { + "operationId": "environment-byProjectId", + "tags": [ + "environment" + ], + "security": [ + { + "Authorization": [] + } + ], + "parameters": [ + { + "name": "projectId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/environment.remove": { + "post": { + "operationId": "environment-remove", + "tags": [ + "environment" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "environmentId": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "environmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/environment.update": { + "post": { + "operationId": "environment-update", + "tags": [ + "environment" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "environmentId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string" + }, + "env": { + "type": "string" + }, + "projectId": { + "type": "string" + } + }, + "required": [ + "environmentId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/environment.duplicate": { + "post": { + "operationId": "environment-duplicate", + "tags": [ + "environment" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "environmentId": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "nullable": true + } + }, + "required": [ + "environmentId", + "name" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Successful response" + } + } + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + } + }, + "components": { + "securitySchemes": { + "apiKey": { + "type": "apiKey", + "in": "header", + "name": "x-api-key", + "description": "API key authentication. Generate an API key from your Dokploy dashboard under Settings > API Keys." + }, + "Authorization": { + "type": "apiKey", + "in": "header", + "name": "Authorization", + "description": "API key authentication using Authorization header" + } + }, + "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" + }, + { + "name": "gitea" + }, + { + "name": "server" + }, + { + "name": "swarm" + }, + { + "name": "ai" + }, + { + "name": "organization" + }, + { + "name": "schedule" + }, + { + "name": "rollback" + }, + { + "name": "volumeBackups" + }, + { + "name": "environment" + } + ], + "externalDocs": { + "description": "Full documentation", + "url": "https://docs.dokploy.com" + }, + "security": [ + { + "apiKey": [] + } + ] +} \ No newline at end of file diff --git a/apps/docs/scripts/fix-openapi.mjs b/apps/docs/scripts/fix-openapi.mjs new file mode 100644 index 0000000..1c0a417 --- /dev/null +++ b/apps/docs/scripts/fix-openapi.mjs @@ -0,0 +1,65 @@ +import { readFileSync, writeFileSync } from 'fs'; +import { join } from 'path'; + +const openapiPath = join(process.cwd(), 'public', 'openapi.json'); + +console.log('Fixing OpenAPI schema...'); + +try { + const openapi = JSON.parse(readFileSync(openapiPath, 'utf8')); + + let fixed = 0; + let securityFixed = false; + + // Fix missing Authorization security scheme + if (!openapi.components) { + openapi.components = {}; + } + if (!openapi.components.securitySchemes) { + openapi.components.securitySchemes = {}; + } + if (!openapi.components.securitySchemes.Authorization) { + openapi.components.securitySchemes.Authorization = { + type: 'apiKey', + in: 'header', + name: 'Authorization', + description: 'API key authentication using Authorization header' + }; + securityFixed = true; + } + + // Fix empty response schemas + for (const [path, pathItem] of Object.entries(openapi.paths || {})) { + for (const [method, operation] of Object.entries(pathItem)) { + if (operation.responses) { + for (const [status, response] of Object.entries(operation.responses)) { + if (response.content && response.content['application/json']) { + const content = response.content['application/json']; + // Check if schema is completely empty or missing + if (Object.keys(content).length === 0 || !content.schema) { + response.content['application/json'] = { + schema: { + type: 'object', + description: 'Successful response' + } + }; + fixed++; + } + } + } + } + } + } + + if (fixed > 0 || securityFixed) { + writeFileSync(openapiPath, JSON.stringify(openapi, null, 2)); + if (fixed > 0) console.log(`✓ Fixed ${fixed} empty response schemas`); + if (securityFixed) console.log(`✓ Added missing Authorization security scheme`); + } else { + console.log('✓ No fixes needed'); + } +} catch (error) { + console.error('Error fixing OpenAPI schema:', error.message); + process.exit(1); +} + diff --git a/apps/docs/source.config.ts b/apps/docs/source.config.ts index 62ab25d..443d9d3 100644 --- a/apps/docs/source.config.ts +++ b/apps/docs/source.config.ts @@ -1,7 +1,7 @@ import { defineConfig, defineDocs } from "fumadocs-mdx/config"; export const { docs, meta } = defineDocs({ - dir: "content/docs", + dir: "content/docs", }); export default defineConfig(); diff --git a/apps/docs/utils/metadata.ts b/apps/docs/utils/metadata.ts index c68397d..8bc700d 100644 --- a/apps/docs/utils/metadata.ts +++ b/apps/docs/utils/metadata.ts @@ -1,30 +1,30 @@ import type { Metadata } from "next"; export const baseUrl = - process.env.NODE_ENV === "development" - ? "http://localhost:3000" - : "https://docs.dokploy.com"; + process.env.NODE_ENV === "development" + ? "http://localhost:3000" + : "https://docs.dokploy.com"; export const url = (path: string): string => new URL(path, baseUrl).toString(); export function createMetadata(override: Metadata): Metadata { - return { - ...override, - openGraph: { - title: override.title ?? undefined, - description: override.description ?? undefined, - url: "https://fumadocs.vercel.app", - images: "/og.png", - siteName: "Fumadocs", - ...override.openGraph, - }, - twitter: { - card: "summary_large_image", - creator: "@money_is_shark", - title: override.title ?? undefined, - description: override.description ?? undefined, - images: "/banner.png", - ...override.twitter, - }, - }; + return { + ...override, + openGraph: { + title: override.title ?? undefined, + description: override.description ?? undefined, + url: "https://fumadocs.vercel.app", + images: "/og.png", + siteName: "Fumadocs", + ...override.openGraph, + }, + twitter: { + card: "summary_large_image", + creator: "@money_is_shark", + title: override.title ?? undefined, + description: override.description ?? undefined, + images: "/banner.png", + ...override.twitter, + }, + }; } diff --git a/apps/website/README.md b/apps/website/README.md index 693a4a8..4d88448 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -2,6 +2,8 @@ Main Landing Page of Dokploy +## Development + Run development server: ```bash @@ -14,10 +16,24 @@ yarn dev Open http://localhost:3000 with your browser to see the result. +## Environment Variables -For Blog Page, you can use the following command to generate the static pages: +### Required for Contact Form + +``` +RESEND_API_KEY=your_resend_api_key_here +``` + +### Required for HubSpot Integration (Sales Forms) + +``` +HUBSPOT_PORTAL_ID=147033433 +HUBSPOT_FORM_GUID=0d788925-ef54-4fda-9b76-741fb5877056 +``` + +### Required for Blog Page ``` GHOST_URL="" GHOST_KEY="" -``` \ No newline at end of file +``` diff --git a/apps/website/app/[locale]/[...rest]/page.tsx b/apps/website/app/[locale]/[...rest]/page.tsx deleted file mode 100644 index 4583936..0000000 --- a/apps/website/app/[locale]/[...rest]/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { notFound } from "next/navigation"; - -export default function CatchAll() { - notFound(); -} diff --git a/apps/website/app/[locale]/_changelog/page.tsx b/apps/website/app/[locale]/_changelog/page.tsx deleted file mode 100644 index f6b1b6d..0000000 --- a/apps/website/app/[locale]/_changelog/page.tsx +++ /dev/null @@ -1,178 +0,0 @@ -// import { ScrollArea } from "@/components/ui/scroll-area"; - -// Datos de ejemplo del changelog -const changelogEntries = [ - { - date: "2023-11-01", - title: "Versión 2.1.0", - changes: [ - "Añadido soporte para modo oscuro en todas las páginas", - "Mejorado el rendimiento para grandes conjuntos de datos", - "Corregido error en el flujo de autenticación de usuarios", - ], - image: - "https://g-ndmbkfuhw2w.vusercontent.net/placeholder.svg?height=200&width=400", - }, - { - date: "2023-10-15", - title: "Versión 2.0.1", - changes: [ - "Corrección urgente para vulnerabilidad crítica de seguridad", - "Actualizadas las dependencias a las últimas versiones", - ], - image: - "https://g-ndmbkfuhw2w.vusercontent.net/placeholder.svg?height=200&width=400", - }, - { - date: "2023-10-01", - title: "Versión 2.0.0", - changes: [ - "Rediseño completo de la UI para mejorar la experiencia de usuario", - "Introducidas nuevas características en el panel de control", - "Añadido soporte para temas personalizados", - "Mejorada la accesibilidad en toda la aplicación", - ], - image: - "https://g-ndmbkfuhw2w.vusercontent.net/placeholder.svg?height=200&width=400", - }, - { - date: "2023-09-15", - title: "Versión 1.9.5", - changes: [ - "Optimización de rendimiento en la carga inicial", - "Nuevas opciones de personalización para usuarios premium", - ], - image: - "https://g-ndmbkfuhw2w.vusercontent.net/placeholder.svg?height=200&width=400", - }, - { - date: "2023-08-01", - title: "Versión 1.9.0", - changes: [ - "Lanzamiento de la API pública para desarrolladores", - "Mejoras en la sincronización de datos entre dispositivos", - ], - image: - "https://g-ndmbkfuhw2w.vusercontent.net/placeholder.svg?height=200&width=400", - }, -]; - -const Comp = () => { - return ( -
    -
    - - - - - - - - - - - - - - - -
    -
    -

    Changelog

    -
    - {changelogEntries.map((entry, index) => ( -
    -
    - - {entry.date} - -

    {entry.title}

    -
    -
    -
    - {`Imagen -
    - -
      - {entry.changes.map((change, changeIndex) => ( -
    • - {change} -
    • - ))} -
    -
    -
    - ))} -
    -
    -
    - ); -}; - -// export default function Changelog() { -// return ( -//
    -//
    -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -//
    -//
    -//

    Changelog

    -//
    -// {changelogEntries.map((entry, index) => ( -//
    -//
    -// -// {entry.date} -// -//

    {entry.title}

    -//
    -//
    -//
    -// {`Imagen -//
    - -//
      -// {entry.changes.map((change, changeIndex) => ( -//
    • -// {change} -//
    • -// ))} -//
    -//
    -//
    -// ))} -//
    -//
    -//
    -// ); -// } diff --git a/apps/website/app/[locale]/api/og/route.ts b/apps/website/app/[locale]/api/og/route.ts deleted file mode 100644 index 7a2dc79..0000000 --- a/apps/website/app/[locale]/api/og/route.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { getPost } from "@/lib/ghost"; -import { generateOGImage } from "@/lib/og-image"; -import type { NextRequest } from "next/server"; - -export async function GET( - request: NextRequest, - { params }: { params: { locale: string } }, -) { - try { - const { searchParams } = new URL(request.url); - const slug = searchParams.get("slug"); - - console.log( - "Generating OG image for slug:", - slug, - "locale:", - params.locale, - ); - - if (!slug) { - console.error("Missing slug parameter"); - return new Response("Missing slug parameter", { status: 400 }); - } - - const post = await getPost(slug); - - if (!post) { - console.error("Post not found for slug:", slug); - return new Response("Post not found", { status: 404 }); - } - - console.log("Found post:", post.title); - - const formattedDate = new Date(post.published_at).toLocaleDateString( - params.locale, - { - year: "numeric", - month: "long", - day: "numeric", - }, - ); - - const ogImage = await generateOGImage({ - title: post.title, - author: post.primary_author - ? { - name: post.primary_author.name, - image: post.primary_author.profile_image || undefined, - } - : undefined, - date: formattedDate, - readingTime: post.reading_time, - }); - - console.log("Successfully generated OG image"); - - return new Response(ogImage, { - headers: { - "Content-Type": "image/png", - "Cache-Control": "public, max-age=31536000, immutable", - }, - }); - } catch (error) { - console.error("Error generating OG image:", error); - return new Response(`Error generating image: ${error}`, { status: 500 }); - } -} diff --git a/apps/website/app/[locale]/blog/[slug]/components/CodeBlock.tsx b/apps/website/app/[locale]/blog/[slug]/components/CodeBlock.tsx deleted file mode 100644 index 0cee0a2..0000000 --- a/apps/website/app/[locale]/blog/[slug]/components/CodeBlock.tsx +++ /dev/null @@ -1,107 +0,0 @@ -"use client"; - -import { CopyButton } from "@/components/ui/copy-button"; -import * as babel from "prettier/plugins/babel"; -import * as estree from "prettier/plugins/estree"; -import * as yaml from "prettier/plugins/yaml"; -import * as prettier from "prettier/standalone"; -import { type JSX, useLayoutEffect, useState } from "react"; -import type { BundledLanguage } from "shiki/bundle/web"; -import { highlight } from "./shared"; - -interface CodeBlockProps { - code: string; - lang: BundledLanguage; - initial?: JSX.Element; -} - -async function formatCode(code: string, lang: string) { - try { - let parser: string; - let plugins = []; - - // Select parser and plugins based on language - switch (lang.toLowerCase()) { - case "yaml": - case "yml": - parser = "yaml"; - plugins = [yaml]; - break; - case "javascript": - case "typescript": - case "jsx": - case "tsx": - parser = "babel-ts"; - plugins = [babel, estree]; - break; - default: - // For unsupported languages, return the original code - return code; - } - - console.log(`Formatting ${lang} with parser:`, parser); - - const formatted = await prettier.format(code, { - parser, - plugins, - semi: true, - singleQuote: true, - tabWidth: 2, - useTabs: false, - printWidth: 120, - }); - - console.log("Formatted code:", formatted); - return formatted; - } catch (error) { - console.error("Error formatting code:", error); - return code; // Return original code if there's an error - } -} - -export function CodeBlock({ code, lang, initial }: CodeBlockProps) { - const [nodes, setNodes] = useState(initial); - const [formattedCode, setFormattedCode] = useState(code); - - useLayoutEffect(() => { - async function formatAndHighlight() { - try { - console.log("Original code:", code); - console.log("Language:", lang); - const formatted = await formatCode(code, lang); - setFormattedCode(formatted); - - // Then highlight the formatted code - const highlighted = await highlight(formatted, lang); - setNodes(highlighted); - } catch (error) { - console.error("Error in formatAndHighlight:", error); - // If formatting fails, try to highlight the original code - const highlighted = await highlight(code, lang); - setNodes(highlighted); - } - } - - void formatAndHighlight(); - }, [code, lang]); - - if (!nodes) { - return ( -
    -
    -
    -
    -
    -
    - ); - } - - return ( -
    - -
    - {nodes} -
    -
    - ); -} diff --git a/apps/website/app/[locale]/blog/[slug]/components/TableOfContents.tsx b/apps/website/app/[locale]/blog/[slug]/components/TableOfContents.tsx deleted file mode 100644 index 925d7cd..0000000 --- a/apps/website/app/[locale]/blog/[slug]/components/TableOfContents.tsx +++ /dev/null @@ -1,84 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; -interface Heading { - id: string; - text: string; - level: number; -} - -export function TableOfContents() { - const [headings, setHeadings] = useState([]); - const [activeId, setActiveId] = useState(); - - useEffect(() => { - const elements = Array.from(document.querySelectorAll("h1, h2, h3")) - .filter((element) => element.id) - .map((element) => ({ - id: element.id, - text: element.textContent || "", - level: Number(element.tagName.charAt(1)), - })); - - setHeadings(elements); - - const observer = new IntersectionObserver( - (entries) => { - for (const entry of entries) { - if (entry.isIntersecting) { - setActiveId(entry.target.id); - } - } - }, - { rootMargin: "-100px 0px -66%" }, - ); - - for (const { id } of elements) { - const element = document.getElementById(id); - if (element) { - observer.observe(element); - } - } - - return () => observer.disconnect(); - }, []); - - return ( - - ); -} diff --git a/apps/website/app/[locale]/blog/[slug]/components/ZoomableImage.tsx b/apps/website/app/[locale]/blog/[slug]/components/ZoomableImage.tsx deleted file mode 100644 index 702c342..0000000 --- a/apps/website/app/[locale]/blog/[slug]/components/ZoomableImage.tsx +++ /dev/null @@ -1,20 +0,0 @@ -"use client"; - -import { cn } from "@/lib/utils"; -import { PhotoProvider, PhotoView } from "react-photo-view"; -import "react-photo-view/dist/react-photo-view.css"; -interface ZoomableImageProps { - src: string; - alt: string; - className?: string; -} - -export function ZoomableImage({ src, alt, className }: ZoomableImageProps) { - return ( - - - {alt} - - - ); -} diff --git a/apps/website/app/[locale]/blog/[slug]/components/shared.ts b/apps/website/app/[locale]/blog/[slug]/components/shared.ts deleted file mode 100644 index 377f2ca..0000000 --- a/apps/website/app/[locale]/blog/[slug]/components/shared.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { toJsxRuntime } from "hast-util-to-jsx-runtime"; -import type { JSX } from "react"; -import { Fragment } from "react"; -import { jsx, jsxs } from "react/jsx-runtime"; -import type { BundledLanguage } from "shiki/bundle/web"; -import { codeToHast } from "shiki/bundle/web"; - -export async function highlight(code: string, lang: BundledLanguage) { - const out = await codeToHast(code, { - lang, - theme: "houston", - }); - - return toJsxRuntime(out, { - Fragment, - jsx, - jsxs, - }) as JSX.Element; -} diff --git a/apps/website/app/[locale]/blog/[slug]/page.tsx b/apps/website/app/[locale]/blog/[slug]/page.tsx deleted file mode 100644 index 95a95db..0000000 --- a/apps/website/app/[locale]/blog/[slug]/page.tsx +++ /dev/null @@ -1,413 +0,0 @@ -import { getPost, getPosts } from "@/lib/ghost"; -import type { Metadata, ResolvingMetadata } from "next"; -import { getTranslations } from "next-intl/server"; -import Image from "next/image"; -import Link from "next/link"; -import { notFound } from "next/navigation"; -import type React from "react"; -import ReactMarkdown from "react-markdown"; -import type { Components } from "react-markdown"; -import rehypeRaw from "rehype-raw"; -import remarkGfm from "remark-gfm"; -import remarkToc from "remark-toc"; -import type { BundledLanguage } from "shiki/bundle/web"; -import TurndownService from "turndown"; -// @ts-ignore -import * as turndownPluginGfm from "turndown-plugin-gfm"; -import { CodeBlock } from "./components/CodeBlock"; -import { H1, H2, H3 } from "./components/Headings"; -import { TableOfContents } from "./components/TableOfContents"; -import { ZoomableImage } from "./components/ZoomableImage"; -type Props = { - params: { locale: string; slug: string }; -}; - -export async function generateMetadata( - { params }: Props, - parent: ResolvingMetadata, -): Promise { - const { locale, slug } = await params; - const post = await getPost(slug); - - if (!post) { - return { - title: "Post Not Found", - }; - } - - const ogUrl = new URL( - `/${locale}/api/og`, - process.env.NODE_ENV === "production" - ? "https://dokploy.com" - : "http://localhost:3000", - ); - ogUrl.searchParams.set("slug", slug); - - return { - title: post.title, - description: post.custom_excerpt || post.excerpt, - openGraph: { - title: post.title, - description: post.custom_excerpt || post.excerpt, - type: "article", - url: `${process.env.NEXT_PUBLIC_APP_URL}/blog/${post.slug}`, - images: [ - { - url: ogUrl.toString(), - width: 1200, - height: 630, - alt: post.title, - }, - ], - }, - twitter: { - card: "summary_large_image", - title: post.title, - description: post.custom_excerpt || post.excerpt, - images: [ogUrl.toString()], - }, - }; -} - -// export async function generateStaticParams() { -// const posts = await getPosts(); -// const locales = ["en", "fr", "es", "zh-Hans"]; - -// return posts.flatMap((post) => -// locales.map((locale) => ({ -// locale, -// slug: post.slug, -// })), -// ); -// } - -export default async function BlogPostPage({ params }: Props) { - const { slug } = await params; - const t = await getTranslations("blog"); - const post = await getPost(slug); - const allPosts = await getPosts(); - - // Get related posts (excluding current post) - const relatedPosts = allPosts.filter((p) => p.id !== post?.id).slice(0, 3); // Show only 3 related posts - - if (!post) { - notFound(); - } - - // Limpiar HTML antes de convertir a Markdown - const cleanHtml = (html: string) => { - // Crear un DOM temporal para limpiar el HTML - if (typeof window !== "undefined") { - const parser = new DOMParser(); - const doc = parser.parseFromString(html, "text/html"); - - // Remover scripts JSON-LD y otros scripts - const scripts = doc.querySelectorAll( - 'script[type="application/ld+json"], script', - ); - scripts.forEach((script) => script.remove()); - - // Remover otros elementos no deseados - const unwantedElements = doc.querySelectorAll("style, meta, link"); - unwantedElements.forEach((el) => el.remove()); - - return doc.body.innerHTML; - } else { - // Fallback para servidor - usar regex para limpiar - return html - .replace( - /]*type="application\/ld\+json"[^>]*>[\s\S]*?<\/script>/gi, - "", - ) - .replace(/]*>[\s\S]*?<\/script>/gi, "") - .replace(/]*>[\s\S]*?<\/style>/gi, "") - .replace(/]*>/gi, "") - .replace(/]*>/gi, ""); - } - }; - - // Convertir HTML a Markdown - const turndownService = new TurndownService({ - headingStyle: "atx", - codeBlockStyle: "fenced", - }); - const gfm = turndownPluginGfm.gfm; - const tables = turndownPluginGfm.tables; - const strikethrough = turndownPluginGfm.strikethrough; - turndownService.use([tables, strikethrough, gfm, remarkToc]); - - const cleanedHtml = cleanHtml(post.html); - const markdown = turndownService.turndown(cleanedHtml); - - const formattedDate = new Date(post.published_at).toLocaleDateString("en", { - year: "numeric", - month: "long", - day: "numeric", - }); - - const components: Partial = { - h1: H1, - h2: H2, - h3: H3, - p: ({ node, children, ...props }) => ( -

    - {children} -

    - ), - a: ({ node, href, ...props }) => ( - - ), - ul: ({ node, ...props }) => ( -