Files
dokploy/openapi.json
Mauricio Siu cee2e9f002 feat: enhance AI chat functionality and API integration
- Updated the AI chat panel to support multiple service types, including applications, databases, and more, improving context handling.
- Implemented local storage for chat messages, allowing users to retain their chat history.
- Enhanced API integration by adding new endpoints for reading deployment build logs and creating tools from OpenAPI specifications.
- Improved error handling and user experience in the chat interface, ensuring smoother interactions.

These changes significantly enhance the AI chat capabilities and overall user experience within the Dokploy platform.
2026-04-11 22:15:58 -06:00

58248 lines
1.6 MiB

{
"openapi": "3.1.0",
"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"
}
],
"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"
},
"paths": {
"/admin.setupMonitoring": {
"post": {
"operationId": "admin-setupMonitoring",
"summary": "Update web server monitoring settings",
"description": "Update the monitoring configuration for the web server including refresh rates, thresholds, and container services. Restarts the monitoring system and returns the updated settings. Disabled on cloud.",
"tags": [
"admin"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
},
"required": [
"refreshRate",
"port",
"token",
"urlCallback",
"retentionDays",
"cronJob",
"thresholds"
]
},
"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"
}
}
}
}
},
"required": [
"refreshRate",
"services"
]
}
},
"required": [
"server",
"containers"
]
}
},
"required": [
"metricsConfig"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.create": {
"post": {
"operationId": "application-create",
"summary": "Create an application",
"description": "Creates a new application in the specified project environment. Supports GitHub, GitLab, Bitbucket, Git, Docker image, and drop sources.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"environmentId": {
"type": "string"
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"environmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.one": {
"get": {
"operationId": "application-one",
"summary": "Get an application",
"description": "Retrieves detailed information about an application by its ID, including git provider access status and deployment configuration.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "applicationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.reload": {
"post": {
"operationId": "application-reload",
"summary": "Reload an application",
"description": "Restarts the Docker container for the application by mechanizing it. Resets the application status to idle, then to done on success or error on failure.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"applicationId": {
"type": "string"
}
},
"required": [
"appName",
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.delete": {
"post": {
"operationId": "application-delete",
"summary": "Delete an application",
"description": "Permanently deletes an application and cleans up all associated resources including Docker services, Traefik configuration, deployments, middlewares, and source code.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.stop": {
"post": {
"operationId": "application-stop",
"summary": "Stop an application",
"description": "Stops the running Docker service for the application and sets its status to idle.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.start": {
"post": {
"operationId": "application-start",
"summary": "Start an application",
"description": "Starts the Docker service for the application and sets its status to done.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.redeploy": {
"post": {
"operationId": "application-redeploy",
"summary": "Redeploy an application",
"description": "Triggers a rebuild and redeployment of the application. Queues a deployment job or executes it directly for cloud servers.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveEnvironment": {
"post": {
"operationId": "application-saveEnvironment",
"summary": "Save environment variables",
"description": "Updates the environment variables, build arguments, and build secrets for an application.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildArgs": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildSecrets": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createEnvFile": {
"type": "boolean"
}
},
"required": [
"applicationId",
"env",
"buildArgs",
"buildSecrets",
"createEnvFile"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveBuildType": {
"post": {
"operationId": "application-saveBuildType",
"summary": "Save build type configuration",
"description": "Updates the build type and related settings for an application, including Dockerfile path, build context, publish directory, and build stage.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dockerContextPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dockerBuildStage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"herokuVersion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"railpackVersion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"publishDirectory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"isStaticSpa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"applicationId",
"buildType",
"dockerfile",
"dockerContextPath",
"dockerBuildStage",
"herokuVersion",
"railpackVersion"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveGithubProvider": {
"post": {
"operationId": "application-saveGithubProvider",
"summary": "Save GitHub provider",
"description": "Configures the application to use a GitHub repository as its source, setting the repository, branch, owner, and build path.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"repository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"owner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"githubId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"triggerType": {
"default": "push",
"type": "string",
"enum": [
"push",
"tag"
]
},
"enableSubmodules": {
"type": "boolean"
},
"watchPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"required": [
"applicationId",
"repository",
"branch",
"owner",
"buildPath",
"githubId",
"triggerType"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveGitlabProvider": {
"post": {
"operationId": "application-saveGitlabProvider",
"summary": "Save GitLab provider",
"description": "Configures the application to use a GitLab repository as its source, setting the repository, branch, owner, build path, and project ID.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"gitlabBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabProjectId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"gitlabPathNamespace": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"enableSubmodules": {
"type": "boolean"
},
"watchPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"required": [
"applicationId",
"gitlabBranch",
"gitlabBuildPath",
"gitlabOwner",
"gitlabRepository",
"gitlabId",
"gitlabProjectId",
"gitlabPathNamespace"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveBitbucketProvider": {
"post": {
"operationId": "application-saveBitbucketProvider",
"summary": "Save Bitbucket provider",
"description": "Configures the application to use a Bitbucket repository as its source, setting the repository, branch, owner, and build path.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bitbucketBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketRepositorySlug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"applicationId": {
"type": "string"
},
"enableSubmodules": {
"type": "boolean"
},
"watchPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"required": [
"bitbucketBranch",
"bitbucketBuildPath",
"bitbucketOwner",
"bitbucketRepository",
"bitbucketRepositorySlug",
"bitbucketId",
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveGiteaProvider": {
"post": {
"operationId": "application-saveGiteaProvider",
"summary": "Save Gitea provider",
"description": "Configures the application to use a Gitea repository as its source, setting the repository, branch, owner, and build path.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"giteaBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"enableSubmodules": {
"type": "boolean"
},
"watchPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"required": [
"applicationId",
"giteaBranch",
"giteaBuildPath",
"giteaOwner",
"giteaRepository",
"giteaId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveDockerProvider": {
"post": {
"operationId": "application-saveDockerProvider",
"summary": "Save Docker provider",
"description": "Configures the application to use a Docker image as its source, setting the image name, registry URL, and optional credentials.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"dockerImage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"applicationId": {
"type": "string"
},
"username": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"password": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"registryUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"dockerImage",
"applicationId",
"username",
"password",
"registryUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.saveGitProvider": {
"post": {
"operationId": "application-saveGitProvider",
"summary": "Save Git provider",
"description": "Configures the application to use a custom Git repository URL as its source, with optional SSH key authentication.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"customGitBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"applicationId": {
"type": "string"
},
"customGitBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"watchPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"enableSubmodules": {
"type": "boolean"
},
"customGitSSHKeyId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"customGitBranch",
"applicationId",
"customGitBuildPath",
"customGitUrl",
"watchPaths"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.disconnectGitProvider": {
"post": {
"operationId": "application-disconnectGitProvider",
"summary": "Disconnect git provider",
"description": "Removes all git provider configuration from the application, resetting source type to default and clearing repository, branch, and owner fields for all providers.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.markRunning": {
"post": {
"operationId": "application-markRunning",
"summary": "Mark application as running",
"description": "Sets the application status to running. Used to indicate that a deployment is in progress.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.update": {
"post": {
"operationId": "application-update",
"summary": "Update an application",
"description": "Updates the general configuration of an application such as name, description, memory limits, CPU limits, and other settings.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"previewEnv": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"watchPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"previewBuildArgs": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"previewBuildSecrets": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"previewLabels": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"previewWildcard": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"previewPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"previewHttps": {
"type": "boolean"
},
"previewPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"previewCertificateType": {
"type": "string",
"enum": [
"letsencrypt",
"none",
"custom"
]
},
"previewCustomCertResolver": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"previewLimit": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"isPreviewDeploymentsActive": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"previewRequireCollaboratorPermissions": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"rollbackActive": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"buildArgs": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildSecrets": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"subtitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"args": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"icon": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"maxLength": 2097152
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"refreshToken": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceType": {
"type": "string",
"enum": [
"github",
"docker",
"git",
"gitlab",
"bitbucket",
"gitea",
"drop"
]
},
"cleanCache": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"repository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"owner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"triggerType": {
"anyOf": [
{
"type": "string",
"enum": [
"push",
"tag"
]
},
{
"type": "null"
}
]
},
"autoDeploy": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"gitlabProjectId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"gitlabRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabPathNamespace": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketRepositorySlug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"username": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"password": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dockerImage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"registryUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitSSHKeyId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"enableSubmodules": {
"type": "boolean"
},
"dockerfile": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dockerContextPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dockerBuildStage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dropBuildPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"healthCheckSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Test": {
"type": "array",
"items": {
"type": "string"
}
},
"Interval": {
"type": "number"
},
"Timeout": {
"type": "number"
},
"StartPeriod": {
"type": "number"
},
"Retries": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"restartPolicySwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"Delay": {
"type": "number"
},
"MaxAttempts": {
"type": "number"
},
"Window": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"placementSwarm": {
"anyOf": [
{
"anyOf": [
{
"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"
]
}
},
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"updateConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"rollbackConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"modeSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Replicated": {
"type": "object",
"properties": {
"Replicas": {
"type": "number"
}
},
"additionalProperties": false
},
"Global": {
"type": "object",
"properties": {}
},
"ReplicatedJob": {
"type": "object",
"properties": {
"MaxConcurrent": {
"type": "number"
},
"TotalCompletions": {
"type": "number"
}
},
"additionalProperties": false
},
"GlobalJob": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"labelsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"networkSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Target": {
"type": "string"
},
"Aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"DriverOpts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"stopGracePeriodSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"endpointSpecSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"ulimitsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"minLength": 1
},
"Soft": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
},
"Hard": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
}
},
"required": [
"Name",
"Soft",
"Hard"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"replicas": {
"type": "number"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"buildType": {
"type": "string",
"enum": [
"dockerfile",
"heroku_buildpacks",
"paketo_buildpacks",
"nixpacks",
"static",
"railpack"
]
},
"railpackVersion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"herokuVersion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"publishDirectory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"isStaticSpa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"createEnvFile": {
"type": "boolean"
},
"createdAt": {
"type": "string"
},
"registryId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"rollbackRegistryId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"environmentId": {
"type": "string"
},
"githubId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildServerId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildRegistryId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.refreshToken": {
"post": {
"operationId": "application-refreshToken",
"summary": "Refresh deploy token",
"description": "Regenerates the webhook refresh token for the application, invalidating the previous token used for triggering deployments.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.deploy": {
"post": {
"operationId": "application-deploy",
"summary": "Deploy an application",
"description": "Triggers a new deployment for the application. Queues a deployment job or executes it directly for cloud servers.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.cleanQueues": {
"post": {
"operationId": "application-cleanQueues",
"summary": "Clean deployment queues",
"description": "Removes all pending deployment jobs from the queue for the specified application.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.clearDeployments": {
"post": {
"operationId": "application-clearDeployments",
"summary": "Clear old deployments",
"description": "Removes old deployment logs and artifacts for the application to free up disk space.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.killBuild": {
"post": {
"operationId": "application-killBuild",
"summary": "Kill active build",
"description": "Forcefully terminates the currently running Docker build process for the application.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.readTraefikConfig": {
"get": {
"operationId": "application-readTraefikConfig",
"summary": "Read Traefik configuration",
"description": "Reads the current Traefik reverse proxy configuration file for the application. Supports both local and remote server configurations.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "applicationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.dropDeployment": {
"post": {
"operationId": "application-dropDeployment",
"summary": "Deploy from zip upload",
"description": "Deploys an application from an uploaded zip file. Unzips the file into the application directory and triggers a deployment.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"zip": {
"type": "string",
"format": "binary"
},
"dropBuildPath": {
"type": "string"
}
},
"required": [
"applicationId",
"zip"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.updateTraefikConfig": {
"post": {
"operationId": "application-updateTraefikConfig",
"summary": "Update Traefik configuration",
"description": "Writes a new Traefik reverse proxy configuration for the application. Supports both local and remote server configurations.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"traefikConfig": {
"type": "string"
}
},
"required": [
"applicationId",
"traefikConfig"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.readAppMonitoring": {
"get": {
"operationId": "application-readAppMonitoring",
"summary": "Read application monitoring stats",
"description": "Retrieves CPU and memory monitoring statistics for the application. Only available in self-hosted mode.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "appName",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.move": {
"post": {
"operationId": "application-move",
"summary": "Move application to another environment",
"description": "Moves an application to a different environment within the same project or to another project's environment.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"applicationId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.cancelDeployment": {
"post": {
"operationId": "application-cancelDeployment",
"summary": "Cancel a deployment",
"description": "Cancels an in-progress deployment for the application and resets its status to idle. Only available in cloud version.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.search": {
"get": {
"operationId": "application-search",
"summary": "Search applications",
"description": "Searches applications by name, appName, description, repository, owner, or Docker image with pagination. Respects service-level access control.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "repository",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "owner",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "dockerImage",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/application.readLogs": {
"get": {
"operationId": "application-readLogs",
"summary": "Read application logs",
"description": "Retrieves Docker container logs for the application with configurable tail length, time range, and optional text search filtering.",
"tags": [
"application"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "applicationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.create": {
"post": {
"operationId": "backup-create",
"summary": "Create a backup",
"description": "Creates a new backup configuration for a database or compose service. If enabled, automatically schedules the backup according to the provided cron expression.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schedule": {
"type": "string"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"prefix": {
"type": "string",
"minLength": 1
},
"destinationId": {
"type": "string"
},
"keepLatestCount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"database": {
"type": "string",
"minLength": 1
},
"mariadbId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mysqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"postgresId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mongoId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"libsqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"databaseType": {
"type": "string",
"enum": [
"postgres",
"mariadb",
"mysql",
"mongo",
"web-server",
"libsql"
]
},
"userId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"backupType": {
"type": "string",
"enum": [
"database",
"compose"
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serviceName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"required": [
"schedule",
"prefix",
"destinationId",
"database",
"databaseType"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.one": {
"get": {
"operationId": "backup-one",
"summary": "Get a backup",
"description": "Returns the details of a specific backup configuration by its ID.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "backupId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.update": {
"post": {
"operationId": "backup-update",
"summary": "Update a backup",
"description": "Updates an existing backup configuration. Reschedules or removes the backup job depending on the enabled state.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schedule": {
"type": "string"
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"prefix": {
"type": "string",
"minLength": 1
},
"backupId": {
"type": "string"
},
"destinationId": {
"type": "string"
},
"database": {
"type": "string",
"minLength": 1
},
"keepLatestCount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"serviceName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"databaseType": {
"type": "string",
"enum": [
"postgres",
"mariadb",
"mysql",
"mongo",
"web-server",
"libsql"
]
}
},
"required": [
"schedule",
"enabled",
"prefix",
"backupId",
"destinationId",
"database",
"keepLatestCount",
"serviceName",
"metadata",
"databaseType"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.remove": {
"post": {
"operationId": "backup-remove",
"summary": "Delete a backup",
"description": "Permanently removes a backup configuration and unschedules any associated backup job.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string"
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.manualBackupPostgres": {
"post": {
"operationId": "backup-manualBackupPostgres",
"summary": "Run a PostgreSQL backup manually",
"description": "Immediately executes a PostgreSQL backup using the specified backup configuration. Cleans up old backups according to retention settings.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.manualBackupMySql": {
"post": {
"operationId": "backup-manualBackupMySql",
"summary": "Run a MySQL backup manually",
"description": "Immediately executes a MySQL backup using the specified backup configuration. Cleans up old backups according to retention settings.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.manualBackupMariadb": {
"post": {
"operationId": "backup-manualBackupMariadb",
"summary": "Run a MariaDB backup manually",
"description": "Immediately executes a MariaDB backup using the specified backup configuration. Cleans up old backups according to retention settings.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.manualBackupCompose": {
"post": {
"operationId": "backup-manualBackupCompose",
"summary": "Run a Compose backup manually",
"description": "Immediately executes a Compose service backup using the specified backup configuration. Cleans up old backups according to retention settings.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.manualBackupMongo": {
"post": {
"operationId": "backup-manualBackupMongo",
"summary": "Run a MongoDB backup manually",
"description": "Immediately executes a MongoDB backup using the specified backup configuration. Cleans up old backups according to retention settings.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.manualBackupLibsql": {
"post": {
"operationId": "backup-manualBackupLibsql",
"summary": "Run a LibSQL backup manually",
"description": "Immediately executes a LibSQL backup using the specified backup configuration. Cleans up old backups according to retention settings.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.manualBackupWebServer": {
"post": {
"operationId": "backup-manualBackupWebServer",
"summary": "Run a web server backup manually",
"description": "Immediately executes a web server backup using the specified backup configuration. Cleans up old backups according to retention settings.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"backupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/backup.listBackupFiles": {
"get": {
"operationId": "backup-listBackupFiles",
"summary": "List backup files in S3",
"description": "Lists backup files stored in the S3 destination bucket. Supports searching by path prefix and returns up to 100 results.",
"tags": [
"backup"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "destinationId",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/bitbucket.create": {
"post": {
"operationId": "bitbucket-create",
"summary": "Create Bitbucket provider",
"description": "Creates a new Bitbucket provider configuration linked to the active organization. Requires gitProviders create permission.",
"tags": [
"bitbucket"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bitbucketId": {
"type": "string"
},
"bitbucketUsername": {
"type": "string"
},
"bitbucketEmail": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/bitbucket.one": {
"get": {
"operationId": "bitbucket-one",
"summary": "Get Bitbucket provider",
"description": "Returns a single Bitbucket provider configuration by its ID.",
"tags": [
"bitbucket"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "bitbucketId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/bitbucket.bitbucketProviders": {
"get": {
"operationId": "bitbucket-bitbucketProviders",
"summary": "List Bitbucket providers",
"description": "Returns all Bitbucket providers accessible to the current user within the active organization.",
"tags": [
"bitbucket"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/bitbucket.getBitbucketRepositories": {
"get": {
"operationId": "bitbucket-getBitbucketRepositories",
"summary": "List Bitbucket repositories",
"description": "Fetches the list of repositories accessible by the Bitbucket provider. Calls the Bitbucket API using the provider's credentials.",
"tags": [
"bitbucket"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "bitbucketId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/bitbucket.getBitbucketBranches": {
"get": {
"operationId": "bitbucket-getBitbucketBranches",
"summary": "List Bitbucket branches",
"description": "Fetches the list of branches for a specific Bitbucket repository. Calls the Bitbucket API using the provider's credentials.",
"tags": [
"bitbucket"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "owner",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "repo",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "bitbucketId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/bitbucket.testConnection": {
"post": {
"operationId": "bitbucket-testConnection",
"summary": "Test Bitbucket connection",
"description": "Tests the connection to a Bitbucket provider by attempting to fetch its repositories. Returns the number of repositories found or throws an error on failure.",
"tags": [
"bitbucket"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bitbucketId": {
"type": "string",
"minLength": 1
},
"bitbucketUsername": {
"type": "string"
},
"bitbucketEmail": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"workspaceName": {
"type": "string"
},
"apiToken": {
"type": "string"
},
"appPassword": {
"type": "string"
}
},
"required": [
"bitbucketId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/bitbucket.update": {
"post": {
"operationId": "bitbucket-update",
"summary": "Update Bitbucket provider",
"description": "Updates a Bitbucket provider configuration. Requires gitProviders create permission.",
"tags": [
"bitbucket"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bitbucketId": {
"type": "string",
"minLength": 1
},
"bitbucketUsername": {
"type": "string"
},
"bitbucketEmail": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"appPassword": {
"type": "string"
},
"apiToken": {
"type": "string"
},
"bitbucketWorkspaceName": {
"type": "string"
},
"gitProviderId": {
"type": "string"
},
"name": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
}
},
"required": [
"bitbucketId",
"gitProviderId",
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/certificates.create": {
"post": {
"operationId": "certificates-create",
"summary": "Create a certificate",
"description": "Creates a new SSL/TLS certificate. In cloud mode, a server must be specified. Logs an audit entry upon creation.",
"tags": [
"certificates"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"organizationId": {
"type": "string"
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"certificateData",
"privateKey",
"organizationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/certificates.one": {
"get": {
"operationId": "certificates-one",
"summary": "Get a certificate",
"description": "Returns a single certificate by its ID. Verifies that the certificate belongs to the current organization.",
"tags": [
"certificates"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "certificateId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/certificates.remove": {
"post": {
"operationId": "certificates-remove",
"summary": "Delete a certificate",
"description": "Deletes a certificate by its ID after verifying organization ownership. Logs an audit entry before removal.",
"tags": [
"certificates"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"certificateId": {
"type": "string",
"minLength": 1
}
},
"required": [
"certificateId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/certificates.all": {
"get": {
"operationId": "certificates-all",
"summary": "List all certificates",
"description": "Returns all certificates belonging to the current organization, including their associated server information.",
"tags": [
"certificates"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/certificates.update": {
"post": {
"operationId": "certificates-update",
"summary": "Update a certificate",
"description": "Updates the name, certificate data, and private key of an existing certificate. Verifies organization ownership before applying changes.",
"tags": [
"certificates"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"certificateId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"certificateData": {
"type": "string",
"minLength": 1
},
"privateKey": {
"type": "string",
"minLength": 1
}
},
"required": [
"certificateId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/cluster.getNodes": {
"get": {
"operationId": "cluster-getNodes",
"summary": "Get cluster nodes",
"description": "Retrieves all nodes in the Docker Swarm cluster. Optionally targets a remote server.",
"tags": [
"cluster"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/cluster.removeWorker": {
"post": {
"operationId": "cluster-removeWorker",
"summary": "Remove a worker node",
"description": "Drains and forcefully removes a worker node from the Docker Swarm cluster. An audit log entry is created for the removal.",
"tags": [
"cluster"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"nodeId": {
"type": "string"
},
"serverId": {
"type": "string"
}
},
"required": [
"nodeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/cluster.addWorker": {
"get": {
"operationId": "cluster-addWorker",
"summary": "Get worker join command",
"description": "Returns the Docker Swarm join command and token for adding a new worker node to the cluster, along with the Docker version.",
"tags": [
"cluster"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/cluster.addManager": {
"get": {
"operationId": "cluster-addManager",
"summary": "Get manager join command",
"description": "Returns the Docker Swarm join command and token for adding a new manager node to the cluster, along with the Docker version.",
"tags": [
"cluster"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.create": {
"post": {
"operationId": "compose-create",
"summary": "Create a compose service",
"description": "Creates a new Docker Compose service in the specified project environment with the given configuration.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"environmentId": {
"type": "string"
},
"composeType": {
"type": "string",
"enum": [
"docker-compose",
"stack"
]
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeFile": {
"type": "string"
}
},
"required": [
"name",
"environmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.one": {
"get": {
"operationId": "compose-one",
"summary": "Get a compose service",
"description": "Retrieves detailed information about a compose service by its ID, including git provider access status and deployment configuration.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.update": {
"post": {
"operationId": "compose-update",
"summary": "Update a compose service",
"description": "Updates the configuration of a compose service such as name, description, compose file content, and other settings.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string"
},
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeFile": {
"type": "string"
},
"refreshToken": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceType": {
"type": "string",
"enum": [
"git",
"github",
"gitlab",
"bitbucket",
"gitea",
"raw"
]
},
"composeType": {
"type": "string",
"enum": [
"docker-compose",
"stack"
]
},
"repository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"owner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autoDeploy": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"gitlabProjectId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"gitlabRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabPathNamespace": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketRepositorySlug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaRepository": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaOwner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitBranch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customGitSSHKeyId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"command": {
"type": "string"
},
"enableSubmodules": {
"type": "boolean"
},
"composePath": {
"type": "string",
"minLength": 1
},
"suffix": {
"type": "string"
},
"randomize": {
"type": "boolean"
},
"isolatedDeployment": {
"type": "boolean"
},
"isolatedDeploymentsVolume": {
"type": "boolean"
},
"triggerType": {
"anyOf": [
{
"type": "string",
"enum": [
"push",
"tag"
]
},
{
"type": "null"
}
]
},
"composeStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"environmentId": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"watchPaths": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"githubId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"gitlabId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"bitbucketId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"giteaId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.saveEnvironment": {
"post": {
"operationId": "compose-saveEnvironment",
"summary": "Save compose environment variables",
"description": "Updates the environment variables for a compose service.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"composeId",
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.delete": {
"post": {
"operationId": "compose-delete",
"summary": "Delete a compose service",
"description": "Permanently deletes a compose service and cleans up associated Docker resources, deployments, and directories. Optionally deletes associated volumes.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
},
"deleteVolumes": {
"type": "boolean"
}
},
"required": [
"composeId",
"deleteVolumes"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.cleanQueues": {
"post": {
"operationId": "compose-cleanQueues",
"summary": "Clean deployment queues",
"description": "Removes all pending deployment jobs from the queue for the specified compose service.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.clearDeployments": {
"post": {
"operationId": "compose-clearDeployments",
"summary": "Clear old deployments",
"description": "Removes old deployment logs and artifacts for the compose service to free up disk space.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.killBuild": {
"post": {
"operationId": "compose-killBuild",
"summary": "Kill active build",
"description": "Forcefully terminates the currently running Docker build process for the compose service.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.loadServices": {
"get": {
"operationId": "compose-loadServices",
"summary": "Load compose services",
"description": "Parses the compose file and returns the list of services defined in it, with their current container status.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "type",
"schema": {
"default": "cache",
"type": "string",
"enum": [
"fetch",
"cache"
]
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.loadMountsByService": {
"get": {
"operationId": "compose-loadMountsByService",
"summary": "Load mounts by service",
"description": "Retrieves the Docker volume mounts for a specific service within a compose stack by inspecting the running container.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "serviceName",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.fetchSourceType": {
"post": {
"operationId": "compose-fetchSourceType",
"summary": "Fetch and clone source",
"description": "Clones the compose repository from the configured git provider and returns the source type. Executes the clone command locally or on a remote server.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.randomizeCompose": {
"post": {
"operationId": "compose-randomizeCompose",
"summary": "Randomize compose file",
"description": "Adds a random suffix to service names and volumes in the compose file to avoid naming conflicts between deployments.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
},
"suffix": {
"type": "string"
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.isolatedDeployment": {
"post": {
"operationId": "compose-isolatedDeployment",
"summary": "Randomize for isolated deployment",
"description": "Randomizes the compose file for isolated deployment mode, ensuring unique service and volume names to support parallel deployments.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
},
"suffix": {
"type": "string"
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.getConvertedCompose": {
"get": {
"operationId": "compose-getConvertedCompose",
"summary": "Get converted compose file",
"description": "Returns the compose file with domains injected as Traefik labels, converted to YAML format ready for deployment.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.deploy": {
"post": {
"operationId": "compose-deploy",
"summary": "Deploy a compose service",
"description": "Triggers a new deployment for the compose service. Queues a deployment job or executes it directly for cloud servers.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.redeploy": {
"post": {
"operationId": "compose-redeploy",
"summary": "Redeploy a compose service",
"description": "Triggers a rebuild and redeployment of the compose service. Queues a deployment job or executes it directly for cloud servers.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.stop": {
"post": {
"operationId": "compose-stop",
"summary": "Stop a compose service",
"description": "Stops all running containers for the compose service using docker compose stop.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.start": {
"post": {
"operationId": "compose-start",
"summary": "Start a compose service",
"description": "Starts all containers for the compose service using docker compose start.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.getDefaultCommand": {
"get": {
"operationId": "compose-getDefaultCommand",
"summary": "Get default compose command",
"description": "Generates and returns the default docker compose command that would be used to deploy the service.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.refreshToken": {
"post": {
"operationId": "compose-refreshToken",
"summary": "Refresh deploy token",
"description": "Regenerates the webhook refresh token for the compose service, invalidating the previous token used for triggering deployments.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.deployTemplate": {
"post": {
"operationId": "compose-deployTemplate",
"summary": "Deploy a template",
"description": "Creates a new compose service from a template by fetching its files, processing variables, creating mounts and domains, and setting up the compose configuration.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.templates": {
"get": {
"operationId": "compose-templates",
"summary": "List available templates",
"description": "Fetches the list of available compose templates from the GitHub templates repository.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "baseUrl",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.getTags": {
"get": {
"operationId": "compose-getTags",
"summary": "Get template tags",
"description": "Fetches all unique tags from the available compose templates for filtering purposes.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "baseUrl",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.disconnectGitProvider": {
"post": {
"operationId": "compose-disconnectGitProvider",
"summary": "Disconnect git provider",
"description": "Removes all git provider configuration from the compose service, resetting source type to default and clearing repository, branch, and owner fields for all providers.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.move": {
"post": {
"operationId": "compose-move",
"summary": "Move compose to another environment",
"description": "Moves a compose service to a different environment within the same project or to another project's environment.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"composeId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.processTemplate": {
"post": {
"operationId": "compose-processTemplate",
"summary": "Process a template",
"description": "Processes a base64-encoded template configuration, resolving variables and generating the compose file and environment settings without applying them.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"base64": {
"type": "string"
},
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"base64",
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.import": {
"post": {
"operationId": "compose-import",
"summary": "Import a template",
"description": "Imports a base64-encoded template into an existing compose service, replacing its compose file, environment variables, mounts, and domains with the template's configuration.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"base64": {
"type": "string"
},
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"base64",
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.cancelDeployment": {
"post": {
"operationId": "compose-cancelDeployment",
"summary": "Cancel a deployment",
"description": "Cancels an in-progress deployment for the compose service and resets its status to idle. Only available in cloud version.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"composeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"composeId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.search": {
"get": {
"operationId": "compose-search",
"summary": "Search compose services",
"description": "Searches compose services by name, appName, or description with pagination. Respects service-level access control.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/compose.readLogs": {
"get": {
"operationId": "compose-readLogs",
"summary": "Read compose container logs",
"description": "Retrieves Docker container logs for a specific container within the compose service with configurable tail length, time range, and optional text search filtering.",
"tags": [
"compose"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "containerId",
"schema": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.all": {
"get": {
"operationId": "deployment-all",
"summary": "List deployments by application",
"description": "Returns all deployments associated with the given application, ordered by creation date.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "applicationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.allByCompose": {
"get": {
"operationId": "deployment-allByCompose",
"summary": "List deployments by compose",
"description": "Returns all deployments associated with the given compose service.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.allByServer": {
"get": {
"operationId": "deployment-allByServer",
"summary": "List deployments by server",
"description": "Returns all deployments associated with the given server.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.allCentralized": {
"get": {
"operationId": "deployment-allCentralized",
"summary": "List all deployments centralized",
"description": "Returns all deployments across all services in the organization. Non-admin users only see deployments for their accessible services.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.queueList": {
"get": {
"operationId": "deployment-queueList",
"summary": "List deployment queue jobs",
"description": "Returns all jobs in the deployment queue with their current state, timestamps, and resolved service paths.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.allByType": {
"get": {
"operationId": "deployment-allByType",
"summary": "List deployments by service type",
"description": "Returns all deployments for a given service ID and type (application, compose, etc.), including associated rollback information.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "id",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "type",
"schema": {
"type": "string",
"enum": [
"application",
"compose",
"server",
"schedule",
"previewDeployment",
"backup",
"volumeBackup"
]
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.killProcess": {
"post": {
"operationId": "deployment-killProcess",
"summary": "Cancel a running deployment",
"description": "Kills the running process of a deployment by sending SIGKILL to its PID. Updates the deployment status to error.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"deploymentId": {
"type": "string",
"minLength": 1
}
},
"required": [
"deploymentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.removeDeployment": {
"post": {
"operationId": "deployment-removeDeployment",
"summary": "Delete a deployment",
"description": "Permanently removes a deployment record and its associated data.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"deploymentId": {
"type": "string",
"minLength": 1
}
},
"required": [
"deploymentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/deployment.readBuildLogs": {
"get": {
"operationId": "deployment-readBuildLogs",
"summary": "Read deployment build logs",
"description": "Reads the build/deployment log file for a specific deployment. Returns the last N lines (default 200). Works for both local and remote server deployments.",
"tags": [
"deployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "deploymentId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 200,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/destination.create": {
"post": {
"operationId": "destination-create",
"summary": "Create backup destination",
"description": "Creates a new S3-compatible backup destination for the current organization and logs an audit event.",
"tags": [
"destination"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"accessKey": {
"type": "string"
},
"bucket": {
"type": "string"
},
"region": {
"type": "string"
},
"endpoint": {
"type": "string"
},
"secretAccessKey": {
"type": "string"
},
"additionalFlags": {
"anyOf": [
{
"default": [],
"type": "array",
"items": {
"type": "string",
"pattern": "^--[a-zA-Z0-9-]+(=[a-zA-Z0-9._:/@-]+)?$"
}
},
{
"type": "null"
}
]
},
"serverId": {
"type": "string"
}
},
"required": [
"name",
"provider",
"accessKey",
"bucket",
"region",
"endpoint",
"secretAccessKey",
"additionalFlags"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/destination.testConnection": {
"post": {
"operationId": "destination-testConnection",
"summary": "Test backup destination connection",
"description": "Tests connectivity to an S3-compatible bucket using rclone. Runs locally or on a remote server depending on configuration.",
"tags": [
"destination"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"accessKey": {
"type": "string"
},
"bucket": {
"type": "string"
},
"region": {
"type": "string"
},
"endpoint": {
"type": "string"
},
"secretAccessKey": {
"type": "string"
},
"additionalFlags": {
"anyOf": [
{
"default": [],
"type": "array",
"items": {
"type": "string",
"pattern": "^--[a-zA-Z0-9-]+(=[a-zA-Z0-9._:/@-]+)?$"
}
},
{
"type": "null"
}
]
},
"serverId": {
"type": "string"
}
},
"required": [
"name",
"provider",
"accessKey",
"bucket",
"region",
"endpoint",
"secretAccessKey",
"additionalFlags"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/destination.one": {
"get": {
"operationId": "destination-one",
"summary": "Get backup destination",
"description": "Returns a single backup destination by ID. Verifies the caller belongs to the same organization.",
"tags": [
"destination"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "destinationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/destination.all": {
"get": {
"operationId": "destination-all",
"summary": "List all backup destinations",
"description": "Returns all S3-compatible backup destinations for the current organization, ordered by creation date descending.",
"tags": [
"destination"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/destination.remove": {
"post": {
"operationId": "destination-remove",
"summary": "Delete backup destination",
"description": "Removes a backup destination by ID. Verifies organization ownership and logs an audit event before deletion.",
"tags": [
"destination"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"destinationId": {
"type": "string"
}
},
"required": [
"destinationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/destination.update": {
"post": {
"operationId": "destination-update",
"summary": "Update backup destination",
"description": "Updates an existing backup destination. Verifies organization ownership before applying changes and logs an audit event.",
"tags": [
"destination"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"additionalFlags": {
"anyOf": [
{
"default": [],
"type": "array",
"items": {
"type": "string",
"pattern": "^--[a-zA-Z0-9-]+(=[a-zA-Z0-9._:/@-]+)?$"
}
},
{
"type": "null"
}
]
},
"serverId": {
"type": "string"
}
},
"required": [
"name",
"accessKey",
"bucket",
"region",
"endpoint",
"secretAccessKey",
"destinationId",
"provider",
"additionalFlags"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.getContainers": {
"get": {
"operationId": "docker-getContainers",
"summary": "Get Docker containers",
"description": "Retrieves a list of all Docker containers. Optionally targets a specific remote server by ID.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.restartContainer": {
"post": {
"operationId": "docker-restartContainer",
"summary": "Restart a Docker container",
"description": "Restarts a Docker container by its ID. An audit log entry is created for the action.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"containerId": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
}
},
"required": [
"containerId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.removeContainer": {
"post": {
"operationId": "docker-removeContainer",
"summary": "Remove a Docker container",
"description": "Removes a Docker container by its ID. Optionally targets a remote server. An audit log entry is created for the deletion.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"containerId": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"serverId": {
"type": "string"
}
},
"required": [
"containerId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.getConfig": {
"get": {
"operationId": "docker-getConfig",
"summary": "Get Docker container configuration",
"description": "Retrieves the configuration (inspect data) for a specific Docker container. Optionally targets a remote server.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "containerId",
"schema": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.getContainersByAppNameMatch": {
"get": {
"operationId": "docker-getContainersByAppNameMatch",
"summary": "Get containers by app name match",
"description": "Retrieves containers whose names match the given application name. Supports filtering by app type (stack or docker-compose) and optionally targets a remote server.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "appType",
"schema": {
"type": "string",
"enum": [
"stack",
"docker-compose"
]
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.getContainersByAppLabel": {
"get": {
"operationId": "docker-getContainersByAppLabel",
"summary": "Get containers by app label",
"description": "Retrieves containers filtered by application label. Supports standalone and swarm deployment types, and optionally targets a remote server.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "appName",
"schema": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "type",
"schema": {
"type": "string",
"enum": [
"standalone",
"swarm"
]
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.getStackContainersByAppName": {
"get": {
"operationId": "docker-getStackContainersByAppName",
"summary": "Get stack containers by app name",
"description": "Retrieves all containers belonging to a Docker stack by application name. Optionally targets a remote server.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "appName",
"schema": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.getServiceContainersByAppName": {
"get": {
"operationId": "docker-getServiceContainersByAppName",
"summary": "Get service containers by app name",
"description": "Retrieves all containers belonging to a Docker Swarm service by application name. Optionally targets a remote server.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "appName",
"schema": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/docker.uploadFileToContainer": {
"post": {
"operationId": "docker-uploadFileToContainer",
"summary": "Upload a file to a Docker container",
"description": "Uploads a file to a specified path inside a Docker container. The file is converted to a buffer and transferred to the container's filesystem.",
"tags": [
"docker"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"containerId": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9.\\-_]+$"
},
"file": {
"type": "string",
"format": "binary"
},
"destinationPath": {
"type": "string",
"minLength": 1
},
"serverId": {
"type": "string"
}
},
"required": [
"containerId",
"file",
"destinationPath"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.create": {
"post": {
"operationId": "domain-create",
"summary": "Create a domain",
"description": "Creates a new domain for an application or compose service. Validates permissions and logs an audit entry.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"host": {
"type": "string",
"minLength": 1
},
"path": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"port": {
"anyOf": [
{
"type": "number",
"minimum": 1,
"maximum": 65535
},
{
"type": "null"
}
]
},
"customEntrypoint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"https": {
"type": "boolean"
},
"applicationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"certificateType": {
"type": "string",
"enum": [
"letsencrypt",
"none",
"custom"
]
},
"customCertResolver": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serviceName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"domainType": {
"anyOf": [
{
"type": "string",
"enum": [
"compose",
"application",
"preview"
]
},
{
"type": "null"
}
]
},
"previewDeploymentId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"internalPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripPath": {
"type": "boolean"
},
"middlewares": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"required": [
"host"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.byApplicationId": {
"get": {
"operationId": "domain-byApplicationId",
"summary": "List domains by application",
"description": "Returns all domains associated with a given application ID.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "applicationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.byComposeId": {
"get": {
"operationId": "domain-byComposeId",
"summary": "List domains by compose service",
"description": "Returns all domains associated with a given compose service ID.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "composeId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.generateDomain": {
"post": {
"operationId": "domain-generateDomain",
"summary": "Generate a traefik.me domain",
"description": "Generates a free traefik.me domain for an application, using the server IP to create a wildcard subdomain.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appName": {
"type": "string"
},
"serverId": {
"type": "string"
}
},
"required": [
"appName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.canGenerateTraefikMeDomains": {
"get": {
"operationId": "domain-canGenerateTraefikMeDomains",
"summary": "Check traefik.me domain availability",
"description": "Checks whether traefik.me domains can be generated by returning the server IP address. Returns the IP from the server record or web server settings.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.update": {
"post": {
"operationId": "domain-update",
"summary": "Update a domain",
"description": "Updates a domain's configuration and refreshes the Traefik routing rules for the associated application or preview deployment.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"host": {
"type": "string",
"minLength": 1
},
"path": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"port": {
"anyOf": [
{
"type": "number",
"minimum": 1,
"maximum": 65535
},
{
"type": "null"
}
]
},
"customEntrypoint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"https": {
"type": "boolean"
},
"certificateType": {
"type": "string",
"enum": [
"letsencrypt",
"none",
"custom"
]
},
"customCertResolver": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serviceName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"domainType": {
"anyOf": [
{
"type": "string",
"enum": [
"compose",
"application",
"preview"
]
},
{
"type": "null"
}
]
},
"internalPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripPath": {
"type": "boolean"
},
"middlewares": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"domainId": {
"type": "string"
}
},
"required": [
"host",
"domainId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.one": {
"get": {
"operationId": "domain-one",
"summary": "Get a domain",
"description": "Returns a single domain by its ID. Validates read permissions against the associated service or preview deployment.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "domainId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.delete": {
"post": {
"operationId": "domain-delete",
"summary": "Delete a domain",
"description": "Deletes a domain by its ID and removes the associated Traefik routing configuration for the application.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"domainId": {
"type": "string",
"minLength": 1
}
},
"required": [
"domainId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/domain.validateDomain": {
"post": {
"operationId": "domain-validateDomain",
"summary": "Validate a domain",
"description": "Checks whether a domain's DNS records are correctly configured, optionally verifying against a specific server IP.",
"tags": [
"domain"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"domain": {
"type": "string"
},
"serverIp": {
"type": "string"
}
},
"required": [
"domain"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.create": {
"post": {
"operationId": "gitea-create",
"summary": "Create Gitea provider",
"description": "Creates a new Gitea provider configuration linked to the active organization. Requires gitProviders create permission.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"giteaId": {
"type": "string"
},
"giteaUrl": {
"type": "string",
"minLength": 1
},
"giteaInternalUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.one": {
"get": {
"operationId": "gitea-one",
"summary": "Get Gitea provider",
"description": "Returns a single Gitea provider configuration by its ID.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "giteaId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.giteaProviders": {
"get": {
"operationId": "gitea-giteaProviders",
"summary": "List Gitea providers",
"description": "Returns all Gitea providers accessible to the current user within the active organization, filtered to only those with valid credentials.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.getGiteaRepositories": {
"get": {
"operationId": "gitea-getGiteaRepositories",
"summary": "List Gitea repositories",
"description": "Fetches the list of repositories accessible by the Gitea provider. Calls the Gitea API using the provider's credentials.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "giteaId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.getGiteaBranches": {
"get": {
"operationId": "gitea-getGiteaBranches",
"summary": "List Gitea branches",
"description": "Fetches the list of branches for a specific Gitea repository. Calls the Gitea API using the provider's credentials.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "owner",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "repositoryName",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "giteaId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.testConnection": {
"post": {
"operationId": "gitea-testConnection",
"summary": "Test Gitea connection",
"description": "Tests the connection to a Gitea provider by attempting to fetch its repositories. Returns the number of repositories found or throws an error on failure.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"giteaId": {
"type": "string"
},
"organizationName": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.update": {
"post": {
"operationId": "gitea-update",
"summary": "Update Gitea provider",
"description": "Updates a Gitea provider configuration and its associated git provider record. Requires gitProviders create permission.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"giteaId": {
"type": "string",
"minLength": 1
},
"giteaUrl": {
"type": "string",
"minLength": 1
},
"giteaInternalUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitea.getGiteaUrl": {
"get": {
"operationId": "gitea-getGiteaUrl",
"summary": "Get Gitea instance URL",
"description": "Returns the base URL of the Gitea instance associated with the given provider ID.",
"tags": [
"gitea"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "giteaId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitProvider.getAll": {
"get": {
"operationId": "gitProvider-getAll",
"summary": "List all git providers",
"description": "Returns all git providers (GitHub, GitLab, Bitbucket, Gitea) accessible to the current user within the active organization, ordered by creation date.",
"tags": [
"gitProvider"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitProvider.toggleShare": {
"post": {
"operationId": "gitProvider-toggleShare",
"summary": "Toggle git provider sharing",
"description": "Toggles whether a git provider is shared with the entire organization. Only the owner of the provider can change this setting.",
"tags": [
"gitProvider"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"gitProviderId": {
"type": "string",
"minLength": 1
},
"sharedWithOrganization": {
"type": "boolean"
}
},
"required": [
"gitProviderId",
"sharedWithOrganization"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitProvider.allForPermissions": {
"get": {
"operationId": "gitProvider-allForPermissions",
"summary": "List git providers for permissions",
"description": "Returns a minimal list of all git providers in the organization for use in permission assignment UIs. Requires a valid enterprise license and member update permission.",
"tags": [
"gitProvider"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitProvider.remove": {
"post": {
"operationId": "gitProvider-remove",
"summary": "Remove git provider",
"description": "Deletes a git provider from the organization. Requires gitProviders delete permission and the provider must belong to the active organization.",
"tags": [
"gitProvider"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"gitProviderId": {
"type": "string",
"minLength": 1
}
},
"required": [
"gitProviderId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/github.one": {
"get": {
"operationId": "github-one",
"summary": "Get GitHub provider",
"description": "Returns a single GitHub provider configuration by its ID.",
"tags": [
"github"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "githubId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/github.getGithubRepositories": {
"get": {
"operationId": "github-getGithubRepositories",
"summary": "List GitHub repositories",
"description": "Fetches the list of repositories accessible by the GitHub provider. Calls the GitHub API using the provider's credentials.",
"tags": [
"github"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "githubId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/github.getGithubBranches": {
"get": {
"operationId": "github-getGithubBranches",
"summary": "List GitHub branches",
"description": "Fetches the list of branches for a specific GitHub repository. Calls the GitHub API using the provider's credentials.",
"tags": [
"github"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "repo",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "owner",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "githubId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/github.githubProviders": {
"get": {
"operationId": "github-githubProviders",
"summary": "List GitHub providers",
"description": "Returns all GitHub providers accessible to the current user within the active organization, filtered to only those with valid credentials.",
"tags": [
"github"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/github.testConnection": {
"post": {
"operationId": "github-testConnection",
"summary": "Test GitHub connection",
"description": "Tests the connection to a GitHub provider by attempting to fetch its repositories. Returns the number of repositories found or throws an error on failure.",
"tags": [
"github"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"githubId": {
"type": "string",
"minLength": 1
}
},
"required": [
"githubId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/github.update": {
"post": {
"operationId": "github-update",
"summary": "Update GitHub provider",
"description": "Updates a GitHub provider configuration and its associated git provider record. Requires gitProviders create permission.",
"tags": [
"github"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"githubId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"gitProviderId": {
"type": "string",
"minLength": 1
},
"githubAppName": {
"type": "string",
"minLength": 1
}
},
"required": [
"githubId",
"name",
"gitProviderId",
"githubAppName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitlab.create": {
"post": {
"operationId": "gitlab-create",
"summary": "Create GitLab provider",
"description": "Creates a new GitLab provider configuration linked to the active organization. Requires gitProviders create permission.",
"tags": [
"gitlab"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"secret": {
"type": "string"
},
"groupName": {
"type": "string"
},
"gitProviderId": {
"type": "string"
},
"redirectUri": {
"type": "string"
},
"authId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"gitlabUrl": {
"type": "string",
"minLength": 1
},
"gitlabInternalUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"authId",
"name",
"gitlabUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitlab.one": {
"get": {
"operationId": "gitlab-one",
"summary": "Get GitLab provider",
"description": "Returns a single GitLab provider configuration by its ID.",
"tags": [
"gitlab"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "gitlabId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitlab.gitlabProviders": {
"get": {
"operationId": "gitlab-gitlabProviders",
"summary": "List GitLab providers",
"description": "Returns all GitLab providers accessible to the current user within the active organization, filtered to only those with valid credentials.",
"tags": [
"gitlab"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitlab.getGitlabRepositories": {
"get": {
"operationId": "gitlab-getGitlabRepositories",
"summary": "List GitLab repositories",
"description": "Fetches the list of repositories accessible by the GitLab provider. Calls the GitLab API using the provider's credentials.",
"tags": [
"gitlab"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "gitlabId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitlab.getGitlabBranches": {
"get": {
"operationId": "gitlab-getGitlabBranches",
"summary": "List GitLab branches",
"description": "Fetches the list of branches for a specific GitLab repository. Calls the GitLab API using the provider's credentials.",
"tags": [
"gitlab"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "id",
"schema": {
"type": "number"
}
},
{
"in": "query",
"name": "owner",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "repo",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "gitlabId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitlab.testConnection": {
"post": {
"operationId": "gitlab-testConnection",
"summary": "Test GitLab connection",
"description": "Tests the connection to a GitLab provider by attempting to fetch its repositories. Returns the number of repositories found or throws an error on failure.",
"tags": [
"gitlab"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"gitlabId": {
"type": "string",
"minLength": 1
},
"groupName": {
"type": "string"
}
},
"required": [
"gitlabId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/gitlab.update": {
"post": {
"operationId": "gitlab-update",
"summary": "Update GitLab provider",
"description": "Updates a GitLab provider configuration and its associated git provider record. Requires gitProviders create permission.",
"tags": [
"gitlab"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"applicationId": {
"type": "string"
},
"secret": {
"type": "string"
},
"groupName": {
"type": "string"
},
"redirectUri": {
"type": "string"
},
"name": {
"type": "string",
"minLength": 1
},
"gitlabId": {
"type": "string",
"minLength": 1
},
"gitlabUrl": {
"type": "string",
"minLength": 1
},
"gitProviderId": {
"type": "string",
"minLength": 1
},
"gitlabInternalUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"gitlabId",
"gitlabUrl",
"gitProviderId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.create": {
"post": {
"operationId": "libsql-create",
"summary": "Create a LibSQL database",
"description": "Creates a new LibSQL database service with the specified configuration, sets up a persistent data volume, and registers it in the project.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1
},
"dockerImage": {
"default": "ghcr.io/tursodatabase/libsql-server:v0.24.32",
"type": "string"
},
"environmentId": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"databaseUser": {
"type": "string",
"minLength": 1
},
"databasePassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"sqldNode": {
"type": "string",
"enum": [
"primary",
"replica"
]
},
"sqldPrimaryUrl": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"enableNamespaces": {
"default": false,
"type": "boolean"
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"appName",
"dockerImage",
"environmentId",
"description",
"databaseUser",
"databasePassword",
"sqldNode",
"sqldPrimaryUrl",
"enableNamespaces",
"serverId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.one": {
"get": {
"operationId": "libsql-one",
"summary": "Get a LibSQL database by ID",
"description": "Returns the full details of a LibSQL database service, including its environment and project configuration.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "libsqlId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.start": {
"post": {
"operationId": "libsql-start",
"summary": "Start a LibSQL database",
"description": "Starts the Docker container for the specified LibSQL database and sets its status to done.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string",
"minLength": 1
}
},
"required": [
"libsqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.stop": {
"post": {
"operationId": "libsql-stop",
"summary": "Stop a LibSQL database",
"description": "Stops the Docker container for the specified LibSQL database and sets its status to idle.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string",
"minLength": 1
}
},
"required": [
"libsqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.saveExternalPorts": {
"post": {
"operationId": "libsql-saveExternalPorts",
"summary": "Save the external ports for a LibSQL database",
"description": "Updates the external port mappings (HTTP, gRPC, admin) for the LibSQL database and triggers a redeployment. Validates that ports are not already in use.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string"
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"externalGRPCPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"externalAdminPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"libsqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.deploy": {
"post": {
"operationId": "libsql-deploy",
"summary": "Deploy a LibSQL database",
"description": "Triggers a deployment for the specified LibSQL database, rebuilding and restarting its Docker container with the current configuration.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string"
}
},
"required": [
"libsqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.changeStatus": {
"post": {
"operationId": "libsql-changeStatus",
"summary": "Change LibSQL database status",
"description": "Updates the application status of a LibSQL database without starting or stopping the container.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
}
},
"required": [
"libsqlId",
"applicationStatus"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.remove": {
"post": {
"operationId": "libsql-remove",
"summary": "Delete a LibSQL database",
"description": "Removes the LibSQL database service, its Docker container, and deletes the database record.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string",
"minLength": 1
}
},
"required": [
"libsqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.saveEnvironment": {
"post": {
"operationId": "libsql-saveEnvironment",
"summary": "Save environment variables for a LibSQL database",
"description": "Updates the environment variables for the specified LibSQL database service.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"libsqlId",
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.reload": {
"post": {
"operationId": "libsql-reload",
"summary": "Reload a LibSQL database",
"description": "Restarts the LibSQL database by stopping and then starting its Docker container.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1
}
},
"required": [
"libsqlId",
"appName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.update": {
"post": {
"operationId": "libsql-update",
"summary": "Update a LibSQL database",
"description": "Updates the configuration of an existing LibSQL database service.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"databaseUser": {
"type": "string",
"minLength": 1
},
"databasePassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"sqldNode": {
"type": "string",
"enum": [
"primary",
"replica"
]
},
"sqldPrimaryUrl": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"enableNamespaces": {
"default": false,
"type": "boolean"
},
"dockerImage": {
"default": "ghcr.io/tursodatabase/libsql-server:v0.24.32",
"type": "string"
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"externalGRPCPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"externalAdminPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"healthCheckSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Test": {
"type": "array",
"items": {
"type": "string"
}
},
"Interval": {
"type": "number"
},
"Timeout": {
"type": "number"
},
"StartPeriod": {
"type": "number"
},
"Retries": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"restartPolicySwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"Delay": {
"type": "number"
},
"MaxAttempts": {
"type": "number"
},
"Window": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"placementSwarm": {
"anyOf": [
{
"anyOf": [
{
"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"
]
}
},
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"updateConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"rollbackConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"modeSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Replicated": {
"type": "object",
"properties": {
"Replicas": {
"type": "number"
}
},
"additionalProperties": false
},
"Global": {
"type": "object",
"properties": {}
},
"ReplicatedJob": {
"type": "object",
"properties": {
"MaxConcurrent": {
"type": "number"
},
"TotalCompletions": {
"type": "number"
}
},
"additionalProperties": false
},
"GlobalJob": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"labelsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"networkSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Target": {
"type": "string"
},
"Aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"DriverOpts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"stopGracePeriodSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"endpointSpecSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"replicas": {
"type": "number"
},
"createdAt": {
"type": "string"
},
"environmentId": {
"type": "string"
}
},
"required": [
"libsqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.move": {
"post": {
"operationId": "libsql-move",
"summary": "Move a LibSQL database to another environment",
"description": "Moves the LibSQL database to a different environment within the same project.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"libsqlId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.rebuild": {
"post": {
"operationId": "libsql-rebuild",
"summary": "Rebuild a LibSQL database",
"description": "Rebuilds the LibSQL database Docker container from scratch, pulling the latest image and recreating the service.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"libsqlId": {
"type": "string"
}
},
"required": [
"libsqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/libsql.readLogs": {
"get": {
"operationId": "libsql-readLogs",
"summary": "Read LibSQL container logs",
"description": "Retrieves the Docker container logs for the specified LibSQL database, with support for tail count, time-based filtering, and text search.",
"tags": [
"libsql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "libsqlId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.create": {
"post": {
"operationId": "mariadb-create",
"summary": "Create a MariaDB database",
"description": "Creates a new MariaDB database service with the specified configuration, sets up a persistent data volume, and registers it in the project.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"dockerImage": {
"default": "mariadb:6",
"type": "string"
},
"databaseRootPassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"environmentId": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"databaseName": {
"type": "string",
"minLength": 1
},
"databaseUser": {
"type": "string",
"minLength": 1
},
"databasePassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"environmentId",
"databaseName",
"databaseUser",
"databasePassword"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.one": {
"get": {
"operationId": "mariadb-one",
"summary": "Get a MariaDB database by ID",
"description": "Returns the full details of a MariaDB database service, including its environment and project configuration.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "mariadbId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.start": {
"post": {
"operationId": "mariadb-start",
"summary": "Start a MariaDB database",
"description": "Starts the Docker container for the specified MariaDB database and sets its status to done.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mariadbId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.stop": {
"post": {
"operationId": "mariadb-stop",
"summary": "Stop a MariaDB database",
"description": "Stops the Docker container for the specified MariaDB database and sets its status to idle.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mariadbId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.saveExternalPort": {
"post": {
"operationId": "mariadb-saveExternalPort",
"summary": "Save the external port for a MariaDB database",
"description": "Updates the external port mapping for the MariaDB database and triggers a redeployment. Validates that the port is not already in use.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string"
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"mariadbId",
"externalPort"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.deploy": {
"post": {
"operationId": "mariadb-deploy",
"summary": "Deploy a MariaDB database",
"description": "Triggers a deployment for the specified MariaDB database, rebuilding and restarting its Docker container with the current configuration.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string"
}
},
"required": [
"mariadbId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.changeStatus": {
"post": {
"operationId": "mariadb-changeStatus",
"summary": "Change MariaDB database status",
"description": "Updates the application status of a MariaDB database without starting or stopping the container.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
}
},
"required": [
"mariadbId",
"applicationStatus"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.remove": {
"post": {
"operationId": "mariadb-remove",
"summary": "Delete a MariaDB database",
"description": "Removes the MariaDB database service, its Docker container, cancels associated backup jobs, and deletes the database record.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mariadbId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.saveEnvironment": {
"post": {
"operationId": "mariadb-saveEnvironment",
"summary": "Save environment variables for a MariaDB database",
"description": "Updates the environment variables for the specified MariaDB database service.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"mariadbId",
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.reload": {
"post": {
"operationId": "mariadb-reload",
"summary": "Reload a MariaDB database",
"description": "Restarts the MariaDB database by stopping and then starting its Docker container.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
}
},
"required": [
"mariadbId",
"appName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.update": {
"post": {
"operationId": "mariadb-update",
"summary": "Update a MariaDB database",
"description": "Updates the configuration of an existing MariaDB database service.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"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"
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"args": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"healthCheckSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Test": {
"type": "array",
"items": {
"type": "string"
}
},
"Interval": {
"type": "number"
},
"Timeout": {
"type": "number"
},
"StartPeriod": {
"type": "number"
},
"Retries": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"restartPolicySwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"Delay": {
"type": "number"
},
"MaxAttempts": {
"type": "number"
},
"Window": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"placementSwarm": {
"anyOf": [
{
"anyOf": [
{
"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"
]
}
},
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"updateConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"rollbackConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"modeSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Replicated": {
"type": "object",
"properties": {
"Replicas": {
"type": "number"
}
},
"additionalProperties": false
},
"Global": {
"type": "object",
"properties": {}
},
"ReplicatedJob": {
"type": "object",
"properties": {
"MaxConcurrent": {
"type": "number"
},
"TotalCompletions": {
"type": "number"
}
},
"additionalProperties": false
},
"GlobalJob": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"labelsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"networkSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Target": {
"type": "string"
},
"Aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"DriverOpts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"stopGracePeriodSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"endpointSpecSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"ulimitsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"minLength": 1
},
"Soft": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
},
"Hard": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
}
},
"required": [
"Name",
"Soft",
"Hard"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"replicas": {
"type": "number"
},
"createdAt": {
"type": "string"
},
"environmentId": {
"type": "string"
}
},
"required": [
"mariadbId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.changePassword": {
"post": {
"operationId": "mariadb-changePassword",
"summary": "Change MariaDB database password",
"description": "Changes the password for a MariaDB user or root account by executing ALTER USER inside the running container and updating the stored password.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"type": {
"default": "user",
"type": "string",
"enum": [
"user",
"root"
]
}
},
"required": [
"mariadbId",
"password"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.move": {
"post": {
"operationId": "mariadb-move",
"summary": "Move a MariaDB database to another environment",
"description": "Moves the MariaDB database to a different environment within the same project.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"mariadbId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.rebuild": {
"post": {
"operationId": "mariadb-rebuild",
"summary": "Rebuild a MariaDB database",
"description": "Rebuilds the MariaDB database Docker container from scratch, pulling the latest image and recreating the service.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mariadbId": {
"type": "string"
}
},
"required": [
"mariadbId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.search": {
"get": {
"operationId": "mariadb-search",
"summary": "Search MariaDB databases",
"description": "Returns a paginated list of MariaDB databases matching the given filters. Supports searching by name, appName, description, project, and environment.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mariadb.readLogs": {
"get": {
"operationId": "mariadb-readLogs",
"summary": "Read MariaDB container logs",
"description": "Retrieves the Docker container logs for the specified MariaDB database, with support for tail count, time-based filtering, and text search.",
"tags": [
"mariadb"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "mariadbId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.create": {
"post": {
"operationId": "mongo-create",
"summary": "Create a MongoDB database",
"description": "Creates a new MongoDB database service with the specified configuration, sets up a persistent data volume, and registers it in the project.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"dockerImage": {
"default": "mongo:15",
"type": "string"
},
"environmentId": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"databaseUser": {
"type": "string",
"minLength": 1
},
"databasePassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"replicaSets": {
"anyOf": [
{
"default": false,
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"environmentId",
"databaseUser",
"databasePassword"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.one": {
"get": {
"operationId": "mongo-one",
"summary": "Get a MongoDB database by ID",
"description": "Returns the full details of a MongoDB database service, including its environment and project configuration.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "mongoId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.start": {
"post": {
"operationId": "mongo-start",
"summary": "Start a MongoDB database",
"description": "Starts the Docker container for the specified MongoDB database and sets its status to done.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mongoId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.stop": {
"post": {
"operationId": "mongo-stop",
"summary": "Stop a MongoDB database",
"description": "Stops the Docker container for the specified MongoDB database and sets its status to idle.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mongoId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.saveExternalPort": {
"post": {
"operationId": "mongo-saveExternalPort",
"summary": "Save the external port for a MongoDB database",
"description": "Updates the external port mapping for the MongoDB database and triggers a redeployment. Validates that the port is not already in use.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string"
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"mongoId",
"externalPort"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.deploy": {
"post": {
"operationId": "mongo-deploy",
"summary": "Deploy a MongoDB database",
"description": "Triggers a deployment for the specified MongoDB database, rebuilding and restarting its Docker container with the current configuration.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string"
}
},
"required": [
"mongoId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.changeStatus": {
"post": {
"operationId": "mongo-changeStatus",
"summary": "Change MongoDB database status",
"description": "Updates the application status of a MongoDB database without starting or stopping the container.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
}
},
"required": [
"mongoId",
"applicationStatus"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.reload": {
"post": {
"operationId": "mongo-reload",
"summary": "Reload a MongoDB database",
"description": "Restarts the MongoDB database by stopping and then starting its Docker container.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
}
},
"required": [
"mongoId",
"appName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.remove": {
"post": {
"operationId": "mongo-remove",
"summary": "Delete a MongoDB database",
"description": "Removes the MongoDB database service, its Docker container, cancels associated backup jobs, and deletes the database record.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mongoId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.saveEnvironment": {
"post": {
"operationId": "mongo-saveEnvironment",
"summary": "Save environment variables for a MongoDB database",
"description": "Updates the environment variables for the specified MongoDB database service.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"mongoId",
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.update": {
"post": {
"operationId": "mongo-update",
"summary": "Update a MongoDB database",
"description": "Updates the configuration of an existing MongoDB database service.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"databaseUser": {
"type": "string",
"minLength": 1
},
"databasePassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"dockerImage": {
"type": "string"
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"args": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"healthCheckSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Test": {
"type": "array",
"items": {
"type": "string"
}
},
"Interval": {
"type": "number"
},
"Timeout": {
"type": "number"
},
"StartPeriod": {
"type": "number"
},
"Retries": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"restartPolicySwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"Delay": {
"type": "number"
},
"MaxAttempts": {
"type": "number"
},
"Window": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"placementSwarm": {
"anyOf": [
{
"anyOf": [
{
"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"
]
}
},
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"updateConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"rollbackConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"modeSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Replicated": {
"type": "object",
"properties": {
"Replicas": {
"type": "number"
}
},
"additionalProperties": false
},
"Global": {
"type": "object",
"properties": {}
},
"ReplicatedJob": {
"type": "object",
"properties": {
"MaxConcurrent": {
"type": "number"
},
"TotalCompletions": {
"type": "number"
}
},
"additionalProperties": false
},
"GlobalJob": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"labelsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"networkSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Target": {
"type": "string"
},
"Aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"DriverOpts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"stopGracePeriodSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"endpointSpecSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"ulimitsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"minLength": 1
},
"Soft": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
},
"Hard": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
}
},
"required": [
"Name",
"Soft",
"Hard"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"replicas": {
"type": "number"
},
"createdAt": {
"type": "string"
},
"environmentId": {
"type": "string"
},
"replicaSets": {
"anyOf": [
{
"default": false,
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"mongoId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.changePassword": {
"post": {
"operationId": "mongo-changePassword",
"summary": "Change MongoDB database password",
"description": "Changes the password for the MongoDB database user by executing changeUserPassword via mongosh inside the running container and updating the stored password.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
}
},
"required": [
"mongoId",
"password"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.move": {
"post": {
"operationId": "mongo-move",
"summary": "Move a MongoDB database to another environment",
"description": "Moves the MongoDB database to a different environment within the same project.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"mongoId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.rebuild": {
"post": {
"operationId": "mongo-rebuild",
"summary": "Rebuild a MongoDB database",
"description": "Rebuilds the MongoDB database Docker container from scratch, pulling the latest image and recreating the service.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mongoId": {
"type": "string"
}
},
"required": [
"mongoId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.search": {
"get": {
"operationId": "mongo-search",
"summary": "Search MongoDB databases",
"description": "Returns a paginated list of MongoDB databases matching the given filters. Supports searching by name, appName, description, project, and environment.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mongo.readLogs": {
"get": {
"operationId": "mongo-readLogs",
"summary": "Read MongoDB container logs",
"description": "Retrieves the Docker container logs for the specified MongoDB database, with support for tail count, time-based filtering, and text search.",
"tags": [
"mongo"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "mongoId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mounts.create": {
"post": {
"operationId": "mounts-create",
"summary": "Create mount",
"description": "Creates a new volume, bind, or file mount for a service. Checks service-level volume permissions and logs an audit event.",
"tags": [
"mounts"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"bind",
"volume",
"file"
]
},
"hostPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"volumeName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mountPath": {
"type": "string",
"minLength": 1
},
"filePath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serviceType": {
"type": "string",
"enum": [
"application",
"postgres",
"mysql",
"mariadb",
"mongo",
"redis",
"compose",
"libsql"
]
},
"serviceId": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"mountPath",
"serviceId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mounts.remove": {
"post": {
"operationId": "mounts-remove",
"summary": "Delete mount",
"description": "Removes a mount by ID. Resolves the owning service to check volume delete permissions and logs an audit event.",
"tags": [
"mounts"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mountId": {
"type": "string"
}
},
"required": [
"mountId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mounts.one": {
"get": {
"operationId": "mounts-one",
"summary": "Get mount",
"description": "Returns a single mount by ID. Resolves the owning service to check volume read permissions.",
"tags": [
"mounts"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "mountId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mounts.update": {
"post": {
"operationId": "mounts-update",
"summary": "Update mount",
"description": "Updates an existing mount. Resolves the owning service to check volume create permissions and logs an audit event.",
"tags": [
"mounts"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mountId": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"bind",
"volume",
"file"
]
},
"hostPath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"volumeName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"filePath": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serviceType": {
"type": "string",
"enum": [
"application",
"postgres",
"mysql",
"mariadb",
"mongo",
"redis",
"compose",
"libsql"
]
},
"mountPath": {
"type": "string",
"minLength": 1
},
"applicationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"libsqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mariadbId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mongoId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mysqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"postgresId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"redisId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"mountId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mounts.allNamedByApplicationId": {
"get": {
"operationId": "mounts-allNamedByApplicationId",
"summary": "List named volumes by application",
"description": "Returns Docker named volumes attached to the running container of a given application. Inspects the live container to retrieve mount information.",
"tags": [
"mounts"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "applicationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mounts.listByServiceId": {
"get": {
"operationId": "mounts-listByServiceId",
"summary": "List mounts by service",
"description": "Returns all configured mounts for a given service (application, compose, or database). Verifies service access and organization ownership.",
"tags": [
"mounts"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serviceType",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "serviceId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.create": {
"post": {
"operationId": "mysql-create",
"summary": "Create a MySQL database",
"description": "Creates a new MySQL database service with the specified configuration, sets up a persistent data volume, and registers it in the project.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"dockerImage": {
"default": "mysql:8",
"type": "string"
},
"environmentId": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"environmentId",
"databaseName",
"databaseUser",
"databasePassword"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.one": {
"get": {
"operationId": "mysql-one",
"summary": "Get a MySQL database by ID",
"description": "Returns the full details of a MySQL database service, including its environment and project configuration.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "mysqlId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.start": {
"post": {
"operationId": "mysql-start",
"summary": "Start a MySQL database",
"description": "Starts the Docker container for the specified MySQL database and sets its status to done.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mysqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.stop": {
"post": {
"operationId": "mysql-stop",
"summary": "Stop a MySQL database",
"description": "Stops the Docker container for the specified MySQL database and sets its status to idle.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mysqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.saveExternalPort": {
"post": {
"operationId": "mysql-saveExternalPort",
"summary": "Save the external port for a MySQL database",
"description": "Updates the external port mapping for the MySQL database and triggers a redeployment. Validates that the port is not already in use.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string"
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"mysqlId",
"externalPort"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.deploy": {
"post": {
"operationId": "mysql-deploy",
"summary": "Deploy a MySQL database",
"description": "Triggers a deployment for the specified MySQL database, rebuilding and restarting its Docker container with the current configuration.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string"
}
},
"required": [
"mysqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.changeStatus": {
"post": {
"operationId": "mysql-changeStatus",
"summary": "Change MySQL database status",
"description": "Updates the application status of a MySQL database without starting or stopping the container.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
}
},
"required": [
"mysqlId",
"applicationStatus"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.reload": {
"post": {
"operationId": "mysql-reload",
"summary": "Reload a MySQL database",
"description": "Restarts the MySQL database by stopping and then starting its Docker container.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
}
},
"required": [
"mysqlId",
"appName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.remove": {
"post": {
"operationId": "mysql-remove",
"summary": "Delete a MySQL database",
"description": "Removes the MySQL database service, its Docker container, cancels associated backup jobs, and deletes the database record.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mysqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.saveEnvironment": {
"post": {
"operationId": "mysql-saveEnvironment",
"summary": "Save environment variables for a MySQL database",
"description": "Updates the environment variables for the specified MySQL database service.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"mysqlId",
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.update": {
"post": {
"operationId": "mysql-update",
"summary": "Update a MySQL database",
"description": "Updates the configuration of an existing MySQL database service.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"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"
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"args": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"healthCheckSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Test": {
"type": "array",
"items": {
"type": "string"
}
},
"Interval": {
"type": "number"
},
"Timeout": {
"type": "number"
},
"StartPeriod": {
"type": "number"
},
"Retries": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"restartPolicySwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"Delay": {
"type": "number"
},
"MaxAttempts": {
"type": "number"
},
"Window": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"placementSwarm": {
"anyOf": [
{
"anyOf": [
{
"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"
]
}
},
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"updateConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"rollbackConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"modeSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Replicated": {
"type": "object",
"properties": {
"Replicas": {
"type": "number"
}
},
"additionalProperties": false
},
"Global": {
"type": "object",
"properties": {}
},
"ReplicatedJob": {
"type": "object",
"properties": {
"MaxConcurrent": {
"type": "number"
},
"TotalCompletions": {
"type": "number"
}
},
"additionalProperties": false
},
"GlobalJob": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"labelsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"networkSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Target": {
"type": "string"
},
"Aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"DriverOpts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"stopGracePeriodSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"endpointSpecSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"ulimitsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"minLength": 1
},
"Soft": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
},
"Hard": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
}
},
"required": [
"Name",
"Soft",
"Hard"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"replicas": {
"type": "number"
},
"createdAt": {
"type": "string"
},
"environmentId": {
"type": "string"
}
},
"required": [
"mysqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.changePassword": {
"post": {
"operationId": "mysql-changePassword",
"summary": "Change MySQL database password",
"description": "Changes the password for a MySQL user or root account by executing ALTER USER inside the running container and updating the stored password.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"type": {
"default": "user",
"type": "string",
"enum": [
"user",
"root"
]
}
},
"required": [
"mysqlId",
"password"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.move": {
"post": {
"operationId": "mysql-move",
"summary": "Move a MySQL database to another environment",
"description": "Moves the MySQL database to a different environment within the same project.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"mysqlId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.rebuild": {
"post": {
"operationId": "mysql-rebuild",
"summary": "Rebuild a MySQL database",
"description": "Rebuilds the MySQL database Docker container from scratch, pulling the latest image and recreating the service.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"mysqlId": {
"type": "string"
}
},
"required": [
"mysqlId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.search": {
"get": {
"operationId": "mysql-search",
"summary": "Search MySQL databases",
"description": "Returns a paginated list of MySQL databases matching the given filters. Supports searching by name, appName, description, project, and environment.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/mysql.readLogs": {
"get": {
"operationId": "mysql-readLogs",
"summary": "Read MySQL container logs",
"description": "Retrieves the Docker container logs for the specified MySQL database, with support for tail count, time-based filtering, and text search.",
"tags": [
"mysql"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "mysqlId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createSlack": {
"post": {
"operationId": "notification-createSlack",
"summary": "Create Slack notification",
"description": "Creates a new Slack notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"webhookUrl",
"channel"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateSlack": {
"post": {
"operationId": "notification-updateSlack",
"summary": "Update Slack notification",
"description": "Updates an existing Slack notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testSlackConnection": {
"post": {
"operationId": "notification-testSlackConnection",
"summary": "Test Slack connection",
"description": "Sends a test message to the configured Slack channel to verify the webhook connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"webhookUrl": {
"type": "string",
"minLength": 1
},
"channel": {
"type": "string"
}
},
"required": [
"webhookUrl",
"channel"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createTelegram": {
"post": {
"operationId": "notification-createTelegram",
"summary": "Create Telegram notification",
"description": "Creates a new Telegram notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"botToken",
"chatId",
"messageThreadId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateTelegram": {
"post": {
"operationId": "notification-updateTelegram",
"summary": "Update Telegram notification",
"description": "Updates an existing Telegram notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testTelegramConnection": {
"post": {
"operationId": "notification-testTelegramConnection",
"summary": "Test Telegram connection",
"description": "Sends a test message to the configured Telegram chat to verify the bot token and chat ID work.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createDiscord": {
"post": {
"operationId": "notification-createDiscord",
"summary": "Create Discord notification",
"description": "Creates a new Discord notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"webhookUrl",
"decoration"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateDiscord": {
"post": {
"operationId": "notification-updateDiscord",
"summary": "Update Discord notification",
"description": "Updates an existing Discord notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testDiscordConnection": {
"post": {
"operationId": "notification-testDiscordConnection",
"summary": "Test Discord connection",
"description": "Sends a test embed message to the configured Discord webhook to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"webhookUrl": {
"type": "string",
"minLength": 1
},
"decoration": {
"type": "boolean"
}
},
"required": [
"webhookUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createEmail": {
"post": {
"operationId": "notification-createEmail",
"summary": "Create Email notification",
"description": "Creates a new SMTP email notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"appBuildError",
"databaseBackup",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"smtpServer",
"smtpPort",
"username",
"password",
"fromAddress",
"toAddresses"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateEmail": {
"post": {
"operationId": "notification-updateEmail",
"summary": "Update Email notification",
"description": "Updates an existing SMTP email notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
},
"notificationId": {
"type": "string",
"minLength": 1
},
"emailId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
}
},
"required": [
"notificationId",
"emailId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testEmailConnection": {
"post": {
"operationId": "notification-testEmailConnection",
"summary": "Test Email connection",
"description": "Sends a test email via the configured SMTP settings to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
},
"fromAddress": {
"type": "string",
"minLength": 1
}
},
"required": [
"smtpServer",
"smtpPort",
"username",
"password",
"toAddresses",
"fromAddress"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createResend": {
"post": {
"operationId": "notification-createResend",
"summary": "Create Resend notification",
"description": "Creates a new Resend email notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
},
"apiKey": {
"type": "string",
"minLength": 1
},
"fromAddress": {
"type": "string",
"minLength": 1
},
"toAddresses": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"appBuildError",
"databaseBackup",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"apiKey",
"fromAddress",
"toAddresses"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateResend": {
"post": {
"operationId": "notification-updateResend",
"summary": "Update Resend notification",
"description": "Updates an existing Resend email notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
},
"apiKey": {
"type": "string",
"minLength": 1
},
"fromAddress": {
"type": "string",
"minLength": 1
},
"toAddresses": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
},
"notificationId": {
"type": "string",
"minLength": 1
},
"resendId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
}
},
"required": [
"notificationId",
"resendId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testResendConnection": {
"post": {
"operationId": "notification-testResendConnection",
"summary": "Test Resend connection",
"description": "Sends a test email via Resend to verify the API key and configuration work.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"apiKey": {
"type": "string",
"minLength": 1
},
"fromAddress": {
"type": "string",
"minLength": 1
},
"toAddresses": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"apiKey",
"fromAddress",
"toAddresses"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.remove": {
"post": {
"operationId": "notification-remove",
"summary": "Delete notification",
"description": "Removes a notification provider by ID. Verifies organization ownership and logs an audit event before deletion.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"notificationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"notificationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.one": {
"get": {
"operationId": "notification-one",
"summary": "Get notification",
"description": "Returns a single notification provider by ID. Verifies the caller belongs to the same organization.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "notificationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.all": {
"get": {
"operationId": "notification-all",
"summary": "List all notifications",
"description": "Returns all notification providers for the current organization, including all provider-specific details (Slack, Telegram, Discord, etc.).",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.receiveNotification": {
"post": {
"operationId": "notification-receiveNotification",
"summary": "Receive server threshold notification",
"description": "Public endpoint that receives CPU/memory threshold alerts from Dokploy or remote servers. Validates the token and dispatches notifications to all configured providers.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ServerType": {
"default": "Dokploy",
"type": "string",
"enum": [
"Dokploy",
"Remote"
]
},
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createGotify": {
"post": {
"operationId": "notification-createGotify",
"summary": "Create Gotify notification",
"description": "Creates a new Gotify notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverUrl",
"appToken",
"priority",
"decoration"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateGotify": {
"post": {
"operationId": "notification-updateGotify",
"summary": "Update Gotify notification",
"description": "Updates an existing Gotify notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testGotifyConnection": {
"post": {
"operationId": "notification-testGotifyConnection",
"summary": "Test Gotify connection",
"description": "Sends a test notification to the configured Gotify server to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createNtfy": {
"post": {
"operationId": "notification-createNtfy",
"summary": "Create ntfy notification",
"description": "Creates a new ntfy notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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"
},
"priority": {
"type": "number",
"minimum": 1
}
},
"required": [
"appBuildError",
"databaseBackup",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverUrl",
"topic",
"accessToken",
"priority"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateNtfy": {
"post": {
"operationId": "notification-updateNtfy",
"summary": "Update ntfy notification",
"description": "Updates an existing ntfy notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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"
},
"priority": {
"type": "number",
"minimum": 1
},
"notificationId": {
"type": "string",
"minLength": 1
},
"ntfyId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
}
},
"required": [
"notificationId",
"ntfyId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testNtfyConnection": {
"post": {
"operationId": "notification-testNtfyConnection",
"summary": "Test ntfy connection",
"description": "Sends a test notification to the configured ntfy topic to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverUrl": {
"type": "string",
"minLength": 1
},
"topic": {
"type": "string",
"minLength": 1
},
"accessToken": {
"type": "string"
},
"priority": {
"type": "number",
"minimum": 1
}
},
"required": [
"serverUrl",
"topic",
"accessToken",
"priority"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createMattermost": {
"post": {
"operationId": "notification-createMattermost",
"summary": "Create Mattermost notification",
"description": "Creates a new Mattermost notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
},
"webhookUrl": {
"type": "string",
"format": "uri"
},
"channel": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"appBuildError",
"databaseBackup",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"webhookUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateMattermost": {
"post": {
"operationId": "notification-updateMattermost",
"summary": "Update Mattermost notification",
"description": "Updates an existing Mattermost notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
},
"webhookUrl": {
"type": "string",
"format": "uri"
},
"channel": {
"type": "string"
},
"username": {
"type": "string"
},
"notificationId": {
"type": "string",
"minLength": 1
},
"mattermostId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
}
},
"required": [
"notificationId",
"mattermostId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testMattermostConnection": {
"post": {
"operationId": "notification-testMattermostConnection",
"summary": "Test Mattermost connection",
"description": "Sends a test message to the configured Mattermost webhook to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"webhookUrl": {
"type": "string",
"format": "uri"
},
"channel": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"webhookUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createCustom": {
"post": {
"operationId": "notification-createCustom",
"summary": "Create custom webhook notification",
"description": "Creates a new custom webhook notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
},
"endpoint": {
"type": "string",
"minLength": 1
},
"headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"name",
"endpoint"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateCustom": {
"post": {
"operationId": "notification-updateCustom",
"summary": "Update custom webhook notification",
"description": "Updates an existing custom webhook notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
},
"endpoint": {
"type": "string",
"minLength": 1
},
"headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"notificationId": {
"type": "string",
"minLength": 1
},
"customId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
}
},
"required": [
"notificationId",
"customId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testCustomConnection": {
"post": {
"operationId": "notification-testCustomConnection",
"summary": "Test custom webhook connection",
"description": "Sends a test payload to the configured custom webhook URL to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"endpoint": {
"type": "string",
"minLength": 1
},
"headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"endpoint"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createLark": {
"post": {
"operationId": "notification-createLark",
"summary": "Create Lark notification",
"description": "Creates a new Lark notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"webhookUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateLark": {
"post": {
"operationId": "notification-updateLark",
"summary": "Update Lark notification",
"description": "Updates an existing Lark notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testLarkConnection": {
"post": {
"operationId": "notification-testLarkConnection",
"summary": "Test Lark connection",
"description": "Sends a test message to the configured Lark webhook to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"webhookUrl": {
"type": "string",
"minLength": 1
}
},
"required": [
"webhookUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createTeams": {
"post": {
"operationId": "notification-createTeams",
"summary": "Create Teams notification",
"description": "Creates a new Microsoft Teams notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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",
"dokployBackup",
"volumeBackup",
"dokployRestart",
"name",
"appDeploy",
"dockerCleanup",
"serverThreshold",
"webhookUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updateTeams": {
"post": {
"operationId": "notification-updateTeams",
"summary": "Update Teams notification",
"description": "Updates an existing Microsoft Teams notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"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
},
"teamsId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
}
},
"required": [
"notificationId",
"teamsId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testTeamsConnection": {
"post": {
"operationId": "notification-testTeamsConnection",
"summary": "Test Teams connection",
"description": "Sends a test message to the configured Microsoft Teams webhook to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"webhookUrl": {
"type": "string",
"minLength": 1
}
},
"required": [
"webhookUrl"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.createPushover": {
"post": {
"operationId": "notification-createPushover",
"summary": "Create Pushover notification",
"description": "Creates a new Pushover notification provider for the current organization and logs an audit event.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
},
"userKey": {
"type": "string",
"minLength": 1
},
"apiToken": {
"type": "string",
"minLength": 1
},
"priority": {
"default": 0,
"type": "number",
"minimum": -2,
"maximum": 2
},
"retry": {
"anyOf": [
{
"type": "number",
"minimum": 30
},
{
"type": "null"
}
]
},
"expire": {
"anyOf": [
{
"type": "number",
"minimum": 1,
"maximum": 10800
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"userKey",
"apiToken"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.updatePushover": {
"post": {
"operationId": "notification-updatePushover",
"summary": "Update Pushover notification",
"description": "Updates an existing Pushover notification provider. Verifies organization ownership before applying changes.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"notificationId": {
"type": "string",
"minLength": 1
},
"pushoverId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string"
},
"userKey": {
"type": "string",
"minLength": 1
},
"apiToken": {
"type": "string",
"minLength": 1
},
"priority": {
"type": "number",
"minimum": -2,
"maximum": 2
},
"retry": {
"anyOf": [
{
"type": "number",
"minimum": 30
},
{
"type": "null"
}
]
},
"expire": {
"anyOf": [
{
"type": "number",
"minimum": 1,
"maximum": 10800
},
{
"type": "null"
}
]
},
"appBuildError": {
"type": "boolean"
},
"databaseBackup": {
"type": "boolean"
},
"dokployBackup": {
"type": "boolean"
},
"volumeBackup": {
"type": "boolean"
},
"dokployRestart": {
"type": "boolean"
},
"name": {
"type": "string"
},
"appDeploy": {
"type": "boolean"
},
"dockerCleanup": {
"type": "boolean"
},
"serverThreshold": {
"type": "boolean"
}
},
"required": [
"notificationId",
"pushoverId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.testPushoverConnection": {
"post": {
"operationId": "notification-testPushoverConnection",
"summary": "Test Pushover connection",
"description": "Sends a test notification to the configured Pushover account to verify the connection works.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userKey": {
"type": "string",
"minLength": 1
},
"apiToken": {
"type": "string",
"minLength": 1
},
"priority": {
"type": "number",
"minimum": -2,
"maximum": 2
},
"retry": {
"anyOf": [
{
"type": "number",
"minimum": 30
},
{
"type": "null"
}
]
},
"expire": {
"anyOf": [
{
"type": "number",
"minimum": 1,
"maximum": 10800
},
{
"type": "null"
}
]
}
},
"required": [
"userKey",
"apiToken",
"priority"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/notification.getEmailProviders": {
"get": {
"operationId": "notification-getEmailProviders",
"summary": "List email notification providers",
"description": "Returns all notification providers that support email (SMTP and Resend) for the current organization.",
"tags": [
"notification"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/port.create": {
"post": {
"operationId": "port-create",
"summary": "Create a port",
"description": "Creates a new port mapping for an application, binding a published port to a target port. Logs an audit entry.",
"tags": [
"port"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"publishedPort": {
"type": "number"
},
"publishMode": {
"default": "ingress",
"type": "string",
"enum": [
"ingress",
"host"
]
},
"targetPort": {
"type": "number"
},
"protocol": {
"default": "tcp",
"type": "string",
"enum": [
"tcp",
"udp"
]
},
"applicationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"publishedPort",
"publishMode",
"targetPort",
"protocol",
"applicationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/port.one": {
"get": {
"operationId": "port-one",
"summary": "Get a port",
"description": "Returns a single port mapping by its ID, including the associated application details.",
"tags": [
"port"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "portId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/port.delete": {
"post": {
"operationId": "port-delete",
"summary": "Delete a port",
"description": "Deletes a port mapping by its ID and logs an audit entry with the published and target port details.",
"tags": [
"port"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"portId": {
"type": "string",
"minLength": 1
}
},
"required": [
"portId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/port.update": {
"post": {
"operationId": "port-update",
"summary": "Update a port",
"description": "Updates an existing port mapping's configuration and logs an audit entry.",
"tags": [
"port"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"portId": {
"type": "string",
"minLength": 1
},
"publishedPort": {
"type": "number"
},
"publishMode": {
"default": "ingress",
"type": "string",
"enum": [
"ingress",
"host"
]
},
"targetPort": {
"type": "number"
},
"protocol": {
"default": "tcp",
"type": "string",
"enum": [
"tcp",
"udp"
]
}
},
"required": [
"portId",
"publishedPort",
"publishMode",
"targetPort",
"protocol"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.create": {
"post": {
"operationId": "postgres-create",
"summary": "Create a PostgreSQL database",
"description": "Creates a new PostgreSQL database service with the specified configuration, sets up a persistent data volume, and registers it in the project.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"databaseName": {
"type": "string",
"minLength": 1
},
"databaseUser": {
"type": "string",
"minLength": 1
},
"databasePassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"dockerImage": {
"default": "postgres:18",
"type": "string"
},
"environmentId": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"databaseName",
"databaseUser",
"databasePassword",
"environmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.one": {
"get": {
"operationId": "postgres-one",
"summary": "Get a PostgreSQL database by ID",
"description": "Returns the full details of a PostgreSQL database service, including its environment and project configuration.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "postgresId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.start": {
"post": {
"operationId": "postgres-start",
"summary": "Start a PostgreSQL database",
"description": "Starts the Docker container for the specified PostgreSQL database and sets its status to done.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string",
"minLength": 1
}
},
"required": [
"postgresId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.stop": {
"post": {
"operationId": "postgres-stop",
"summary": "Stop a PostgreSQL database",
"description": "Stops the Docker container for the specified PostgreSQL database and sets its status to idle.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string",
"minLength": 1
}
},
"required": [
"postgresId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.saveExternalPort": {
"post": {
"operationId": "postgres-saveExternalPort",
"summary": "Save the external port for a PostgreSQL database",
"description": "Updates the external port mapping for the PostgreSQL database and triggers a redeployment. Validates that the port is not already in use.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string"
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"postgresId",
"externalPort"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.deploy": {
"post": {
"operationId": "postgres-deploy",
"summary": "Deploy a PostgreSQL database",
"description": "Triggers a deployment for the specified PostgreSQL database, rebuilding and restarting its Docker container with the current configuration.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string"
}
},
"required": [
"postgresId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.changeStatus": {
"post": {
"operationId": "postgres-changeStatus",
"summary": "Change PostgreSQL database status",
"description": "Updates the application status of a PostgreSQL database without starting or stopping the container.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
}
},
"required": [
"postgresId",
"applicationStatus"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.remove": {
"post": {
"operationId": "postgres-remove",
"summary": "Delete a PostgreSQL database",
"description": "Removes the PostgreSQL database service, its Docker container, cancels associated backup jobs, and deletes the database record.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string",
"minLength": 1
}
},
"required": [
"postgresId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.saveEnvironment": {
"post": {
"operationId": "postgres-saveEnvironment",
"summary": "Save environment variables for a PostgreSQL database",
"description": "Updates the environment variables for the specified PostgreSQL database service.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"postgresId",
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.reload": {
"post": {
"operationId": "postgres-reload",
"summary": "Reload a PostgreSQL database",
"description": "Restarts the PostgreSQL database by stopping and then starting its Docker container.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
}
},
"required": [
"postgresId",
"appName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.update": {
"post": {
"operationId": "postgres-update",
"summary": "Update a PostgreSQL database",
"description": "Updates the configuration of an existing PostgreSQL database service.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"databaseName": {
"type": "string",
"minLength": 1
},
"databaseUser": {
"type": "string",
"minLength": 1
},
"databasePassword": {
"type": "string",
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dockerImage": {
"type": "string"
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"args": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"memoryLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"healthCheckSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Test": {
"type": "array",
"items": {
"type": "string"
}
},
"Interval": {
"type": "number"
},
"Timeout": {
"type": "number"
},
"StartPeriod": {
"type": "number"
},
"Retries": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"restartPolicySwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"Delay": {
"type": "number"
},
"MaxAttempts": {
"type": "number"
},
"Window": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"placementSwarm": {
"anyOf": [
{
"anyOf": [
{
"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"
]
}
},
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"updateConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"rollbackConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"modeSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Replicated": {
"type": "object",
"properties": {
"Replicas": {
"type": "number"
}
},
"additionalProperties": false
},
"Global": {
"type": "object",
"properties": {}
},
"ReplicatedJob": {
"type": "object",
"properties": {
"MaxConcurrent": {
"type": "number"
},
"TotalCompletions": {
"type": "number"
}
},
"additionalProperties": false
},
"GlobalJob": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"labelsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"networkSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Target": {
"type": "string"
},
"Aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"DriverOpts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"stopGracePeriodSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"endpointSpecSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"ulimitsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"minLength": 1
},
"Soft": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
},
"Hard": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
}
},
"required": [
"Name",
"Soft",
"Hard"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"replicas": {
"type": "number"
},
"createdAt": {
"type": "string"
},
"environmentId": {
"type": "string"
}
},
"required": [
"postgresId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.changePassword": {
"post": {
"operationId": "postgres-changePassword",
"summary": "Change PostgreSQL database password",
"description": "Changes the password for the PostgreSQL database user by executing ALTER USER inside the running container and updating the stored password.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
}
},
"required": [
"postgresId",
"password"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.move": {
"post": {
"operationId": "postgres-move",
"summary": "Move a PostgreSQL database to another environment",
"description": "Moves the PostgreSQL database to a different environment within the same project.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"postgresId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.rebuild": {
"post": {
"operationId": "postgres-rebuild",
"summary": "Rebuild a PostgreSQL database",
"description": "Rebuilds the PostgreSQL database Docker container from scratch, pulling the latest image and recreating the service.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"postgresId": {
"type": "string"
}
},
"required": [
"postgresId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.search": {
"get": {
"operationId": "postgres-search",
"summary": "Search PostgreSQL databases",
"description": "Returns a paginated list of PostgreSQL databases matching the given filters. Supports searching by name, appName, description, project, and environment.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/postgres.readLogs": {
"get": {
"operationId": "postgres-readLogs",
"summary": "Read PostgreSQL container logs",
"description": "Retrieves the Docker container logs for the specified PostgreSQL database, with support for tail count, time-based filtering, and text search.",
"tags": [
"postgres"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "postgresId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/previewDeployment.all": {
"get": {
"operationId": "previewDeployment-all",
"summary": "List preview deployments",
"description": "Returns all preview deployments associated with the given application.",
"tags": [
"previewDeployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "applicationId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/previewDeployment.one": {
"get": {
"operationId": "previewDeployment-one",
"summary": "Get a preview deployment",
"description": "Returns the details of a specific preview deployment by its ID.",
"tags": [
"previewDeployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "previewDeploymentId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/previewDeployment.delete": {
"post": {
"operationId": "previewDeployment-delete",
"summary": "Delete a preview deployment",
"description": "Permanently removes a preview deployment and its associated resources.",
"tags": [
"previewDeployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"previewDeploymentId": {
"type": "string"
}
},
"required": [
"previewDeploymentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/previewDeployment.redeploy": {
"post": {
"operationId": "previewDeployment-redeploy",
"summary": "Redeploy a preview deployment",
"description": "Triggers a rebuild of an existing preview deployment by adding a new job to the deployment queue.",
"tags": [
"previewDeployment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"previewDeploymentId": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"previewDeploymentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.create": {
"post": {
"operationId": "project-create",
"summary": "Create a project",
"description": "Creates a new project in the current organization with a default environment. Validates server availability for cloud deployments.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"env": {
"type": "string"
}
},
"required": [
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.one": {
"get": {
"operationId": "project-one",
"summary": "Get a project",
"description": "Retrieves a project by its ID with all environments and services. Filters services based on the user's access permissions.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.all": {
"get": {
"operationId": "project-all",
"summary": "List all projects",
"description": "Returns all projects in the current organization with their environments and services. Filters results based on the user's access permissions.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.allForPermissions": {
"get": {
"operationId": "project-allForPermissions",
"summary": "List all projects for permissions",
"description": "Returns all projects with their environments and services for the permissions management UI. Requires member update permission.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.search": {
"get": {
"operationId": "project-search",
"summary": "Search projects",
"description": "Searches projects by name or description with pagination. Respects project-level access control for non-admin users.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.remove": {
"post": {
"operationId": "project-remove",
"summary": "Delete a project",
"description": "Permanently deletes a project and all its associated environments, services, and resources.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1
}
},
"required": [
"projectId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.update": {
"post": {
"operationId": "project-update",
"summary": "Update a project",
"description": "Updates a project's name, description, or environment variables. Validates organization ownership and project-level access permissions.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"organizationId": {
"type": "string"
},
"env": {
"type": "string"
}
},
"required": [
"projectId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/project.duplicate": {
"post": {
"operationId": "project-duplicate",
"summary": "Duplicate a project or environment",
"description": "Duplicates services from a source environment into a new project or into the same project. Copies applications, compose services, databases, and their associated domains, mounts, ports, and backups.",
"tags": [
"project"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"sourceEnvironmentId": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"includeServices": {
"default": true,
"type": "boolean"
},
"selectedServices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"application",
"compose",
"libsql",
"mariadb",
"mongo",
"mysql",
"postgres",
"redis"
]
}
},
"required": [
"id",
"type"
]
}
},
"duplicateInSameProject": {
"default": false,
"type": "boolean"
}
},
"required": [
"sourceEnvironmentId",
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redirects.create": {
"post": {
"operationId": "redirects-create",
"summary": "Create a redirect",
"description": "Creates a new redirect rule for an application using a regex pattern. Logs an audit entry.",
"tags": [
"redirects"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redirects.one": {
"get": {
"operationId": "redirects-one",
"summary": "Get a redirect",
"description": "Returns a single redirect rule by its ID.",
"tags": [
"redirects"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "redirectId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redirects.delete": {
"post": {
"operationId": "redirects-delete",
"summary": "Delete a redirect",
"description": "Deletes a redirect rule by its ID and logs an audit entry.",
"tags": [
"redirects"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redirectId": {
"type": "string",
"minLength": 1
}
},
"required": [
"redirectId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redirects.update": {
"post": {
"operationId": "redirects-update",
"summary": "Update a redirect",
"description": "Updates an existing redirect rule's configuration and logs an audit entry.",
"tags": [
"redirects"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.create": {
"post": {
"operationId": "redis-create",
"summary": "Create a Redis database",
"description": "Creates a new Redis database service with the specified configuration, sets up a persistent data volume, and registers it in the project.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"databasePassword": {
"type": "string"
},
"dockerImage": {
"default": "redis:8",
"type": "string"
},
"environmentId": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"databasePassword",
"environmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.one": {
"get": {
"operationId": "redis-one",
"summary": "Get a Redis database by ID",
"description": "Returns the full details of a Redis database service, including its environment and project configuration.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "redisId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.start": {
"post": {
"operationId": "redis-start",
"summary": "Start a Redis database",
"description": "Starts the Docker container for the specified Redis database and sets its status to done.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string",
"minLength": 1
}
},
"required": [
"redisId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.reload": {
"post": {
"operationId": "redis-reload",
"summary": "Reload a Redis database",
"description": "Restarts the Redis database by stopping and then starting its Docker container.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
}
},
"required": [
"redisId",
"appName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.stop": {
"post": {
"operationId": "redis-stop",
"summary": "Stop a Redis database",
"description": "Stops the Docker container for the specified Redis database and sets its status to idle.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string",
"minLength": 1
}
},
"required": [
"redisId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.saveExternalPort": {
"post": {
"operationId": "redis-saveExternalPort",
"summary": "Save the external port for a Redis database",
"description": "Updates the external port mapping for the Redis database and triggers a redeployment. Validates that the port is not already in use.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string"
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"redisId",
"externalPort"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.deploy": {
"post": {
"operationId": "redis-deploy",
"summary": "Deploy a Redis database",
"description": "Triggers a deployment for the specified Redis database, rebuilding and restarting its Docker container with the current configuration.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string"
}
},
"required": [
"redisId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.changeStatus": {
"post": {
"operationId": "redis-changeStatus",
"summary": "Change Redis database status",
"description": "Updates the application status of a Redis database without starting or stopping the container.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
}
},
"required": [
"redisId",
"applicationStatus"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.remove": {
"post": {
"operationId": "redis-remove",
"summary": "Delete a Redis database",
"description": "Removes the Redis database service, its Docker container, and deletes the database record.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string",
"minLength": 1
}
},
"required": [
"redisId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.saveEnvironment": {
"post": {
"operationId": "redis-saveEnvironment",
"summary": "Save environment variables for a Redis database",
"description": "Updates the environment variables for the specified Redis database service.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string"
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"redisId",
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.update": {
"post": {
"operationId": "redis-update",
"summary": "Update a Redis database",
"description": "Updates the configuration of an existing Redis database service.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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,
"maxLength": 63,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"databasePassword": {
"type": "string"
},
"dockerImage": {
"type": "string"
},
"command": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"args": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"env": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"memoryLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuReservation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cpuLimit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"externalPort": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"applicationStatus": {
"type": "string",
"enum": [
"idle",
"running",
"done",
"error"
]
},
"healthCheckSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Test": {
"type": "array",
"items": {
"type": "string"
}
},
"Interval": {
"type": "number"
},
"Timeout": {
"type": "number"
},
"StartPeriod": {
"type": "number"
},
"Retries": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"restartPolicySwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"Delay": {
"type": "number"
},
"MaxAttempts": {
"type": "number"
},
"Window": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"placementSwarm": {
"anyOf": [
{
"anyOf": [
{
"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"
]
}
},
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"updateConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"rollbackConfigSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"modeSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"properties": {
"Replicated": {
"type": "object",
"properties": {
"Replicas": {
"type": "number"
}
},
"additionalProperties": false
},
"Global": {
"type": "object",
"properties": {}
},
"ReplicatedJob": {
"type": "object",
"properties": {
"MaxConcurrent": {
"type": "number"
},
"TotalCompletions": {
"type": "number"
}
},
"additionalProperties": false
},
"GlobalJob": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"labelsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"networkSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Target": {
"type": "string"
},
"Aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"DriverOpts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"stopGracePeriodSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"endpointSpecSwarm": {
"anyOf": [
{
"anyOf": [
{
"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
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"ulimitsSwarm": {
"anyOf": [
{
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"minLength": 1
},
"Soft": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
},
"Hard": {
"type": "integer",
"minimum": -1,
"maximum": 9007199254740991
}
},
"required": [
"Name",
"Soft",
"Hard"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"replicas": {
"type": "number"
},
"environmentId": {
"type": "string"
}
},
"required": [
"redisId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.changePassword": {
"post": {
"operationId": "redis-changePassword",
"summary": "Change Redis database password",
"description": "Changes the password for the Redis database by executing CONFIG SET requirepass inside the running container and updating the stored password.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string",
"minLength": 1
},
"password": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9@#%^&*()_+\\-=[\\]{}|;:,.<>?~`]*$"
}
},
"required": [
"redisId",
"password"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.move": {
"post": {
"operationId": "redis-move",
"summary": "Move a Redis database to another environment",
"description": "Moves the Redis database to a different environment within the same project.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string"
},
"targetEnvironmentId": {
"type": "string"
}
},
"required": [
"redisId",
"targetEnvironmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.rebuild": {
"post": {
"operationId": "redis-rebuild",
"summary": "Rebuild a Redis database",
"description": "Rebuilds the Redis database Docker container from scratch, pulling the latest image and recreating the service.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redisId": {
"type": "string"
}
},
"required": [
"redisId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.search": {
"get": {
"operationId": "redis-search",
"summary": "Search Redis databases",
"description": "Returns a paginated list of Redis databases matching the given filters. Supports searching by name, appName, description, project, and environment.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/redis.readLogs": {
"get": {
"operationId": "redis-readLogs",
"summary": "Read Redis container logs",
"description": "Retrieves the Docker container logs for the specified Redis database, with support for tail count, time-based filtering, and text search.",
"tags": [
"redis"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "redisId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "tail",
"schema": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
{
"in": "query",
"name": "since",
"schema": {
"default": "all",
"type": "string",
"pattern": "^(all|\\d+[smhd])$"
}
},
{
"in": "query",
"name": "search",
"schema": {
"type": "string",
"pattern": "^[a-zA-Z0-9 ._-]{0,500}$"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/registry.create": {
"post": {
"operationId": "registry-create",
"summary": "Create registry",
"description": "Creates a new Docker registry entry for the current organization and logs an audit event.",
"tags": [
"registry"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverId": {
"type": "string"
}
},
"required": [
"registryName",
"username",
"password",
"registryUrl",
"registryType",
"imagePrefix"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/registry.remove": {
"post": {
"operationId": "registry-remove",
"summary": "Delete registry",
"description": "Removes a Docker registry entry by ID. Verifies organization ownership and logs an audit event before deletion.",
"tags": [
"registry"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"registryId": {
"type": "string",
"minLength": 1
}
},
"required": [
"registryId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/registry.update": {
"post": {
"operationId": "registry-update",
"summary": "Update registry",
"description": "Updates an existing Docker registry entry. Verifies organization ownership before applying changes and logs an audit event.",
"tags": [
"registry"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"registryId": {
"type": "string",
"minLength": 1
},
"registryName": {
"type": "string",
"minLength": 1
},
"imagePrefix": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/registry.all": {
"get": {
"operationId": "registry-all",
"summary": "List all registries",
"description": "Returns all Docker registry entries for the current organization.",
"tags": [
"registry"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/registry.one": {
"get": {
"operationId": "registry-one",
"summary": "Get registry",
"description": "Returns a single Docker registry entry by ID. Verifies the caller belongs to the same organization.",
"tags": [
"registry"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "registryId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/registry.testRegistry": {
"post": {
"operationId": "registry-testRegistry",
"summary": "Test registry credentials",
"description": "Attempts a docker login with the provided credentials to verify the registry URL, username, and password are valid. Can run locally or on a remote server.",
"tags": [
"registry"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverId": {
"type": "string"
}
},
"required": [
"username",
"password",
"registryUrl",
"registryType"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/registry.testRegistryById": {
"post": {
"operationId": "registry-testRegistryById",
"summary": "Test registry connection by ID",
"description": "Looks up a saved registry by ID and attempts a docker login with its stored credentials. Verifies organization ownership before testing.",
"tags": [
"registry"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"registryId": {
"type": "string",
"minLength": 1
},
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/security.create": {
"post": {
"operationId": "security-create",
"summary": "Create a security entry",
"description": "Creates a new HTTP basic auth security entry for an application with the provided username and password. Logs an audit entry.",
"tags": [
"security"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/security.one": {
"get": {
"operationId": "security-one",
"summary": "Get a security entry",
"description": "Returns a single HTTP basic auth security entry by its ID.",
"tags": [
"security"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "securityId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/security.delete": {
"post": {
"operationId": "security-delete",
"summary": "Delete a security entry",
"description": "Deletes an HTTP basic auth security entry by its ID and logs an audit entry.",
"tags": [
"security"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"securityId": {
"type": "string",
"minLength": 1
}
},
"required": [
"securityId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/security.update": {
"post": {
"operationId": "security-update",
"summary": "Update a security entry",
"description": "Updates an existing HTTP basic auth security entry's configuration and logs an audit entry.",
"tags": [
"security"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.create": {
"post": {
"operationId": "server-create",
"summary": "Create a server",
"description": "Creates a new server in the organization. In cloud mode, enforces the user's server quantity limit. Returns the newly created server.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ipAddress": {
"type": "string"
},
"port": {
"type": "number"
},
"username": {
"type": "string"
},
"sshKeyId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverType": {
"type": "string",
"enum": [
"deploy",
"build"
]
}
},
"required": [
"name",
"description",
"ipAddress",
"port",
"username",
"sshKeyId",
"serverType"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.one": {
"get": {
"operationId": "server-one",
"summary": "Get a server",
"description": "Retrieves a single server by its ID. Validates that the user has access to the server within their organization.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.getDefaultCommand": {
"get": {
"operationId": "server-getDefaultCommand",
"summary": "Get default server command",
"description": "Returns the default setup command for a server. The command varies depending on whether the server is a build server or a deploy server.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.all": {
"get": {
"operationId": "server-all",
"summary": "List all servers",
"description": "Returns all servers in the current organization along with a count of associated services (applications, compose, databases). Results are filtered by the user's accessible server permissions.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.allForPermissions": {
"get": {
"operationId": "server-allForPermissions",
"summary": "List all servers for permissions",
"description": "Returns a minimal list of servers (ID, name, IP, type) used for configuring member permissions. Requires a valid enterprise license.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.count": {
"get": {
"operationId": "server-count",
"summary": "Get server count",
"description": "Returns the total number of servers across all organizations owned by the current user.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.withSSHKey": {
"get": {
"operationId": "server-withSSHKey",
"summary": "List servers with SSH keys",
"description": "Returns all deploy-type servers that have an SSH key configured. In cloud mode, only active servers are included. Results are filtered by the user's accessible server permissions.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.buildServers": {
"get": {
"operationId": "server-buildServers",
"summary": "List build servers",
"description": "Returns all build-type servers that have an SSH key configured. In cloud mode, only active servers are included. Results are filtered by the user's accessible server permissions.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.setup": {
"post": {
"operationId": "server-setup",
"summary": "Setup a server",
"description": "Runs the initial setup process on a remote server, installing required dependencies and configuring Docker. An audit log entry is created.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string",
"minLength": 1
}
},
"required": [
"serverId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.validate": {
"get": {
"operationId": "server-validate",
"summary": "Validate server configuration",
"description": "Checks the server for required tools and configuration including Docker, Rclone, Nixpacks, Buildpacks, Railpack, Swarm mode, network setup, and privilege mode.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.security": {
"get": {
"operationId": "server-security",
"summary": "Get server security audit",
"description": "Performs a security audit on the server, checking UFW firewall, SSH configuration, non-root user setup, unattended upgrades, and Fail2Ban status.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.setupMonitoring": {
"post": {
"operationId": "server-setupMonitoring",
"summary": "Setup server monitoring",
"description": "Configures and deploys the monitoring agent on a server with the specified metrics configuration including refresh rates, retention, thresholds, and container service filters.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
},
"required": [
"refreshRate",
"port",
"token",
"urlCallback",
"retentionDays",
"cronJob",
"thresholds"
]
},
"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"
}
}
}
}
},
"required": [
"refreshRate",
"services"
]
}
},
"required": [
"server",
"containers"
]
}
},
"required": [
"serverId",
"metricsConfig"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.remove": {
"post": {
"operationId": "server-remove",
"summary": "Remove a server",
"description": "Deletes a server and removes all associated deployments. Fails if the server has active services. In cloud mode, updates the user's server quantity allocation.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string",
"minLength": 1
}
},
"required": [
"serverId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.update": {
"post": {
"operationId": "server-update",
"summary": "Update a server",
"description": "Updates the configuration of an existing server. Fails if the server is inactive. An audit log entry is created for the update.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverId": {
"type": "string",
"minLength": 1
},
"ipAddress": {
"type": "string"
},
"port": {
"type": "number"
},
"username": {
"type": "string"
},
"sshKeyId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverType": {
"type": "string",
"enum": [
"deploy",
"build"
]
},
"command": {
"type": "string"
}
},
"required": [
"name",
"description",
"serverId",
"ipAddress",
"port",
"username",
"sshKeyId",
"serverType"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.publicIp": {
"get": {
"operationId": "server-publicIp",
"summary": "Get public IP address",
"description": "Returns the public IP address of the local server. Returns an empty string in cloud mode.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.getServerTime": {
"get": {
"operationId": "server-getServerTime",
"summary": "Get server time",
"description": "Returns the current server time and timezone. Returns null in cloud mode.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/server.getServerMetrics": {
"get": {
"operationId": "server-getServerMetrics",
"summary": "Get server metrics",
"description": "Fetches monitoring metrics (CPU, memory, disk, network) from the server's monitoring agent endpoint. Requires the monitoring service to be configured and running.",
"tags": [
"server"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "url",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "token",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "dataPoints",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getWebServerSettings": {
"get": {
"operationId": "settings-getWebServerSettings",
"summary": "Get web server settings",
"description": "Retrieve the current web server settings. Returns null on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.reloadServer": {
"post": {
"operationId": "settings-reloadServer",
"summary": "Reload Dokploy server",
"description": "Reload the Dokploy Docker service with the current version. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanRedis": {
"post": {
"operationId": "settings-cleanRedis",
"summary": "Flush Redis data",
"description": "Execute FLUSHALL on the Dokploy Redis container, removing all cached data. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.reloadRedis": {
"post": {
"operationId": "settings-reloadRedis",
"summary": "Reload Redis service",
"description": "Force-reload the Dokploy Redis Docker service. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanAllDeploymentQueue": {
"post": {
"operationId": "settings-cleanAllDeploymentQueue",
"summary": "Clean all deployment queues",
"description": "Remove all pending jobs from the deployment queue. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.reloadTraefik": {
"post": {
"operationId": "settings-reloadTraefik",
"summary": "Reload Traefik service",
"description": "Force-reload the Dokploy Traefik Docker service. Runs in the background to avoid proxy timeouts. Optionally targets a specific server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.toggleDashboard": {
"post": {
"operationId": "settings-toggleDashboard",
"summary": "Toggle Traefik dashboard",
"description": "Enable or disable the Traefik dashboard by adding or removing port 8080. Checks for port conflicts before enabling. Runs the Traefik setup in the background.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"enableDashboard": {
"type": "boolean"
},
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanUnusedImages": {
"post": {
"operationId": "settings-cleanUnusedImages",
"summary": "Clean unused Docker images",
"description": "Remove all unused Docker images from the host or a specified server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanUnusedVolumes": {
"post": {
"operationId": "settings-cleanUnusedVolumes",
"summary": "Clean unused Docker volumes",
"description": "Remove all unused Docker volumes from the host or a specified server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanStoppedContainers": {
"post": {
"operationId": "settings-cleanStoppedContainers",
"summary": "Clean stopped Docker containers",
"description": "Remove all stopped Docker containers from the host or a specified server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanDockerBuilder": {
"post": {
"operationId": "settings-cleanDockerBuilder",
"summary": "Clean Docker build cache",
"description": "Remove Docker builder cache from the host or a specified server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanDockerPrune": {
"post": {
"operationId": "settings-cleanDockerPrune",
"summary": "Prune Docker system",
"description": "Run a full Docker system prune and builder cache cleanup on the host or a specified server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanAll": {
"post": {
"operationId": "settings-cleanAll",
"summary": "Clean all Docker resources",
"description": "Run a comprehensive Docker cleanup (images, containers, volumes, builders, system prune) in the background to avoid gateway timeouts.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanMonitoring": {
"post": {
"operationId": "settings-cleanMonitoring",
"summary": "Clean monitoring data",
"description": "Delete and recreate the monitoring data directory, removing all collected metrics. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getDockerDiskUsage": {
"get": {
"operationId": "settings-getDockerDiskUsage",
"summary": "Get Docker disk usage",
"description": "Retrieve Docker disk usage statistics. Returns an empty array on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.saveSSHPrivateKey": {
"post": {
"operationId": "settings-saveSSHPrivateKey",
"summary": "Save SSH private key",
"description": "Store an SSH private key in the web server settings for remote server access. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"sshPrivateKey": {
"type": "string"
}
},
"required": [
"sshPrivateKey"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.assignDomainServer": {
"post": {
"operationId": "settings-assignDomainServer",
"summary": "Assign domain to server",
"description": "Configure the server domain, HTTPS settings, certificate type, and Let's Encrypt email. Updates both web server settings and Traefik configuration. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"certificateType": {
"type": "string",
"enum": [
"letsencrypt",
"none",
"custom"
]
},
"letsEncryptEmail": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "string",
"const": ""
}
]
},
{
"type": "null"
}
]
},
"https": {
"type": "boolean"
}
},
"required": [
"host",
"certificateType"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.cleanSSHPrivateKey": {
"post": {
"operationId": "settings-cleanSSHPrivateKey",
"summary": "Remove SSH private key",
"description": "Clear the stored SSH private key from web server settings. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateDockerCleanup": {
"post": {
"operationId": "settings-updateDockerCleanup",
"summary": "Update Docker cleanup schedule",
"description": "Enable or disable automatic Docker cleanup for a server or the web server. When enabled, schedules a cron job that periodically removes unused Docker resources and sends notifications.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"enableDockerCleanup": {
"type": "boolean"
},
"serverId": {
"type": "string"
}
},
"required": [
"enableDockerCleanup"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.readTraefikConfig": {
"get": {
"operationId": "settings-readTraefikConfig",
"summary": "Read main Traefik configuration",
"description": "Read the main Traefik configuration file. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateTraefikConfig": {
"post": {
"operationId": "settings-updateTraefikConfig",
"summary": "Update main Traefik configuration",
"description": "Overwrite the main Traefik configuration file with the provided content. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"traefikConfig": {
"type": "string",
"minLength": 1
}
},
"required": [
"traefikConfig"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.readWebServerTraefikConfig": {
"get": {
"operationId": "settings-readWebServerTraefikConfig",
"summary": "Read web server Traefik configuration",
"description": "Read the Dokploy-specific Traefik configuration file. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateWebServerTraefikConfig": {
"post": {
"operationId": "settings-updateWebServerTraefikConfig",
"summary": "Update web server Traefik configuration",
"description": "Overwrite the Dokploy-specific Traefik configuration file with the provided content. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"traefikConfig": {
"type": "string",
"minLength": 1
}
},
"required": [
"traefikConfig"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.readMiddlewareTraefikConfig": {
"get": {
"operationId": "settings-readMiddlewareTraefikConfig",
"summary": "Read middleware Traefik configuration",
"description": "Read the Traefik middlewares configuration file. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateMiddlewareTraefikConfig": {
"post": {
"operationId": "settings-updateMiddlewareTraefikConfig",
"summary": "Update middleware Traefik configuration",
"description": "Overwrite the Traefik middlewares configuration file with the provided content. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"traefikConfig": {
"type": "string",
"minLength": 1
}
},
"required": [
"traefikConfig"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getUpdateData": {
"post": {
"operationId": "settings-getUpdateData",
"summary": "Check for Dokploy updates",
"description": "Check whether a newer version of Dokploy is available. Returns default data on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateServer": {
"post": {
"operationId": "settings-updateServer",
"summary": "Update Dokploy to latest version",
"description": "Pull the latest Dokploy Docker image and update the service if a new version is available. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getDokployVersion": {
"get": {
"operationId": "settings-getDokployVersion",
"summary": "Get Dokploy version",
"description": "Return the currently running Dokploy version from package.json.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getReleaseTag": {
"get": {
"operationId": "settings-getReleaseTag",
"summary": "Get Dokploy release tag",
"description": "Return the Docker image tag of the running Dokploy instance.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.readDirectories": {
"get": {
"operationId": "settings-readDirectories",
"summary": "List Traefik configuration directories",
"description": "Read the directory listing of the main Traefik configuration path. Requires traefikFiles.read permission.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateTraefikFile": {
"post": {
"operationId": "settings-updateTraefikFile",
"summary": "Update a Traefik configuration file",
"description": "Write content to a specific Traefik configuration file at the given path. Requires traefikFiles.write permission.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.readTraefikFile": {
"get": {
"operationId": "settings-readTraefikFile",
"summary": "Read a Traefik configuration file",
"description": "Read the content of a specific Traefik configuration file at the given path. Requires traefikFiles.read permission. Validates server ownership when a serverId is provided.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "path",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getIp": {
"get": {
"operationId": "settings-getIp",
"summary": "Get server IP address",
"description": "Return the configured server IP address from web server settings. Returns an empty string on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateServerIp": {
"post": {
"operationId": "settings-updateServerIp",
"summary": "Update server IP address",
"description": "Update the server IP address stored in web server settings. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverIp": {
"type": "string"
}
},
"required": [
"serverIp"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getOpenApiDocument": {
"get": {
"operationId": "settings-getOpenApiDocument",
"summary": "Get OpenAPI specification",
"description": "Generate and return the full OpenAPI document for the Dokploy API, including all endpoints, tags, and security schemes.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.readTraefikEnv": {
"get": {
"operationId": "settings-readTraefikEnv",
"summary": "Read Traefik environment variables",
"description": "Retrieve the environment variables configured for the Dokploy Traefik service, optionally for a specific server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.writeTraefikEnv": {
"post": {
"operationId": "settings-writeTraefikEnv",
"summary": "Write Traefik environment variables",
"description": "Update the environment variables for the Dokploy Traefik service and restart it in the background. Preserves the current port configuration.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"env": {
"type": "string"
},
"serverId": {
"type": "string"
}
},
"required": [
"env"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.haveTraefikDashboardPortEnabled": {
"get": {
"operationId": "settings-haveTraefikDashboardPortEnabled",
"summary": "Check Traefik dashboard port status",
"description": "Check whether port 8080 (Traefik dashboard) is currently enabled in the Traefik service port configuration.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.haveActivateRequests": {
"get": {
"operationId": "settings-haveActivateRequests",
"summary": "Check if request logging is active",
"description": "Check whether Traefik access log (request logging) is enabled by inspecting the main Traefik configuration. Returns true on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.toggleRequests": {
"post": {
"operationId": "settings-toggleRequests",
"summary": "Toggle request logging",
"description": "Enable or disable Traefik access log (request logging) by updating the main Traefik configuration file. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"enable": {
"type": "boolean"
}
},
"required": [
"enable"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.isCloud": {
"get": {
"operationId": "settings-isCloud",
"summary": "Check if running on cloud",
"description": "Return whether this Dokploy instance is running in cloud mode.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.isUserSubscribed": {
"get": {
"operationId": "settings-isUserSubscribed",
"summary": "Check if user has resources",
"description": "Check whether the current organization has any servers or projects, indicating active usage.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.health": {
"get": {
"operationId": "settings-health",
"summary": "Health check",
"description": "Verify the application is running and the database connection is healthy by executing a simple query.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.checkInfrastructureHealth": {
"get": {
"operationId": "settings-checkInfrastructureHealth",
"summary": "Check infrastructure health",
"description": "Check the health status of PostgreSQL, Redis, and Traefik services. Returns healthy for all on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.setupGPU": {
"post": {
"operationId": "settings-setupGPU",
"summary": "Set up GPU support",
"description": "Install and configure GPU support (NVIDIA runtime) on the host or a specified server. On cloud, a serverId is required.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.checkGPUStatus": {
"get": {
"operationId": "settings-checkGPUStatus",
"summary": "Check GPU status",
"description": "Retrieve detailed GPU status including driver version, CUDA support, memory info, available GPUs, and Docker Swarm GPU resources for the host or a specified server.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateTraefikPorts": {
"post": {
"operationId": "settings-updateTraefikPorts",
"summary": "Update Traefik ports",
"description": "Replace the Traefik service port mappings with the provided list. Checks for port conflicts before applying. Runs the Traefik setup in the background.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
},
"required": [
"additionalPorts"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getTraefikPorts": {
"get": {
"operationId": "settings-getTraefikPorts",
"summary": "Get Traefik ports",
"description": "Retrieve the current port mappings configured for the Dokploy Traefik service.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.updateLogCleanup": {
"post": {
"operationId": "settings-updateLogCleanup",
"summary": "Update log cleanup schedule",
"description": "Start or stop the automatic log cleanup cron job. Provide a cron expression to start, or null to stop. Disabled on cloud.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cronExpression": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"cronExpression"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getLogCleanupStatus": {
"get": {
"operationId": "settings-getLogCleanupStatus",
"summary": "Get log cleanup status",
"description": "Return the current status and schedule of the automatic log cleanup job.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/settings.getDokployCloudIps": {
"get": {
"operationId": "settings-getDokployCloudIps",
"summary": "Get Dokploy cloud IP addresses",
"description": "Return the list of Dokploy cloud IP addresses from the environment configuration. Returns an empty array in self-hosted mode.",
"tags": [
"settings"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sshKey.create": {
"post": {
"operationId": "sshKey-create",
"summary": "Create SSH key",
"description": "Stores a new SSH key for the current organization and logs an audit event.",
"tags": [
"sshKey"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"privateKey": {
"type": "string"
},
"publicKey": {
"type": "string"
},
"organizationId": {
"type": "string"
}
},
"required": [
"name",
"privateKey",
"publicKey",
"organizationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sshKey.remove": {
"post": {
"operationId": "sshKey-remove",
"summary": "Delete SSH key",
"description": "Removes an SSH key by ID. Verifies organization ownership and logs an audit event before deletion.",
"tags": [
"sshKey"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"sshKeyId": {
"type": "string"
}
},
"required": [
"sshKeyId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sshKey.one": {
"get": {
"operationId": "sshKey-one",
"summary": "Get SSH key",
"description": "Returns a single SSH key by ID. Verifies the caller belongs to the same organization.",
"tags": [
"sshKey"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "sshKeyId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sshKey.all": {
"get": {
"operationId": "sshKey-all",
"summary": "List all SSH keys",
"description": "Returns all SSH keys for the current organization, ordered by creation date descending.",
"tags": [
"sshKey"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sshKey.allForApps": {
"get": {
"operationId": "sshKey-allForApps",
"summary": "List SSH keys for app selection",
"description": "Returns a lightweight list of SSH keys (ID and name only) for the current organization, suitable for dropdown selectors in application forms.",
"tags": [
"sshKey"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sshKey.generate": {
"post": {
"operationId": "sshKey-generate",
"summary": "Generate SSH key pair",
"description": "Generates a new SSH key pair of the specified type (RSA, ED25519, etc.) and returns both public and private keys.",
"tags": [
"sshKey"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"rsa",
"ed25519"
]
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sshKey.update": {
"post": {
"operationId": "sshKey-update",
"summary": "Update SSH key",
"description": "Updates an existing SSH key. Verifies organization ownership before applying changes and logs an audit event.",
"tags": [
"sshKey"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lastUsedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sshKeyId": {
"type": "string"
}
},
"required": [
"sshKeyId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.getCurrentPlan": {
"get": {
"operationId": "stripe-getCurrentPlan",
"summary": "Get current billing plan",
"description": "Returns the active Stripe billing plan (hobby, startup, or legacy) for the caller's organization owner. Returns null if not on cloud or no subscription exists.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.getProducts": {
"get": {
"operationId": "stripe-getProducts",
"summary": "List Stripe products and subscriptions",
"description": "Returns available Stripe products, the user's active subscriptions, current plan tier, billing interval, and price amount.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.createCheckoutSession": {
"post": {
"operationId": "stripe-createCheckoutSession",
"summary": "Create Stripe checkout session",
"description": "Creates a Stripe checkout session for subscribing to a billing plan. Handles customer creation or reuse and returns the session ID for redirect.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tier": {
"type": "string",
"enum": [
"legacy",
"hobby",
"startup"
]
},
"productId": {
"type": "string"
},
"serverQuantity": {
"type": "number",
"minimum": 1
},
"isAnnual": {
"type": "boolean"
}
},
"required": [
"tier",
"productId",
"serverQuantity",
"isAnnual"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.createCustomerPortalSession": {
"post": {
"operationId": "stripe-createCustomerPortalSession",
"summary": "Create Stripe customer portal session",
"description": "Creates a Stripe billing portal session URL so the user can manage their subscription, payment methods, and invoices.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.upgradeSubscription": {
"post": {
"operationId": "stripe-upgradeSubscription",
"summary": "Upgrade subscription",
"description": "Upgrades or changes the current Stripe subscription to a different tier or server quantity. Applies prorated charges for the billing period change.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tier": {
"type": "string",
"enum": [
"hobby",
"startup"
]
},
"serverQuantity": {
"type": "number",
"minimum": 1
},
"isAnnual": {
"type": "boolean"
}
},
"required": [
"tier",
"serverQuantity",
"isAnnual"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.canCreateMoreServers": {
"get": {
"operationId": "stripe-canCreateMoreServers",
"summary": "Check server creation quota",
"description": "Returns whether the organization can create more servers based on their subscription's server quantity limit. Always returns true for self-hosted instances.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.updateInvoiceNotifications": {
"post": {
"operationId": "stripe-updateInvoiceNotifications",
"summary": "Update invoice notification preference",
"description": "Enables or disables email notifications for invoice events. Only available on Dokploy Cloud.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/stripe.getInvoices": {
"get": {
"operationId": "stripe-getInvoices",
"summary": "List invoices",
"description": "Returns up to 100 Stripe invoices for the organization owner, including status, amounts, and download links.",
"tags": [
"stripe"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/swarm.getNodes": {
"get": {
"operationId": "swarm-getNodes",
"summary": "Get Swarm nodes",
"description": "Retrieves all nodes in the Docker Swarm. Optionally targets a remote server by ID.",
"tags": [
"swarm"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/swarm.getNodeInfo": {
"get": {
"operationId": "swarm-getNodeInfo",
"summary": "Get Swarm node info",
"description": "Retrieves detailed information about a specific Docker Swarm node by its node ID. Optionally targets a remote server.",
"tags": [
"swarm"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "nodeId",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/swarm.getNodeApps": {
"get": {
"operationId": "swarm-getNodeApps",
"summary": "Get Swarm node applications",
"description": "Retrieves all applications (services) running across Docker Swarm nodes. Optionally targets a remote server.",
"tags": [
"swarm"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/swarm.getContainerStats": {
"get": {
"operationId": "swarm-getContainerStats",
"summary": "Get container stats",
"description": "Retrieves resource usage statistics for all containers. Optionally targets a remote server and validates organization access.",
"tags": [
"swarm"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "serverId",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.all": {
"get": {
"operationId": "user-all",
"summary": "List all organization members",
"description": "Retrieve all members of the current active organization, including their associated user data, ordered by creation date.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.one": {
"get": {
"operationId": "user-one",
"summary": "Get a user by ID",
"description": "Retrieve a specific user's membership and profile within the active organization. Users can view their own data; admins and owners can view any member. Requires member.update permission for non-self lookups.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "userId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.session": {
"get": {
"operationId": "user-session",
"summary": "Get current session",
"description": "Return the current user's ID and active organization ID from the session. Returns null if no valid session exists.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.get": {
"get": {
"operationId": "user-get",
"summary": "Get current user profile",
"description": "Retrieve the current authenticated user's membership record including user profile and API keys for the active organization.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getPermissions": {
"get": {
"operationId": "user-getPermissions",
"summary": "Get resolved permissions",
"description": "Return the fully resolved permissions for the current user in the active organization, combining role-based and custom permissions.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.haveRootAccess": {
"get": {
"operationId": "user-haveRootAccess",
"summary": "Check root access",
"description": "Check whether the current user has root admin access. Only returns true in cloud mode for the designated admin user or impersonating sessions.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getBackups": {
"get": {
"operationId": "user-getBackups",
"summary": "Get user backups",
"description": "Retrieve the current admin user's backup configurations including destinations, deployments, and API keys.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getServerMetrics": {
"get": {
"operationId": "user-getServerMetrics",
"summary": "Get server metrics user",
"description": "Retrieve the user record associated with server metrics access for the current organization membership.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.update": {
"post": {
"operationId": "user-update",
"summary": "Update current user",
"description": "Update the current user's profile. If changing the password, the current password must be provided and verified. Logs an audit event on success.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"isRegistered": {
"type": "boolean"
},
"expirationDate": {
"type": "string"
},
"createdAt2": {
"type": "string"
},
"createdAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"twoFactorEnabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"email": {
"type": "string",
"minLength": 1,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"emailVerified": {
"type": "boolean"
},
"image": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"banned": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"banReason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"banExpires": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updatedAt": {
"type": "string"
},
"enablePaidFeatures": {
"type": "boolean"
},
"allowImpersonation": {
"type": "boolean"
},
"enableEnterpriseFeatures": {
"type": "boolean"
},
"licenseKey": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripeCustomerId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stripeSubscriptionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serversQuantity": {
"type": "number"
},
"sendInvoiceNotifications": {
"type": "boolean"
},
"password": {
"type": "string"
},
"currentPassword": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getUserByToken": {
"get": {
"operationId": "user-getUserByToken",
"summary": "Get user by token",
"description": "Look up a user by their authentication token. This is a public endpoint that does not require an active session.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "token",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getMetricsToken": {
"get": {
"operationId": "user-getMetricsToken",
"summary": "Get metrics token and configuration",
"description": "Retrieve the server IP, paid features flag, and monitoring configuration needed for metrics collection.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.remove": {
"post": {
"operationId": "user-remove",
"summary": "Remove a user",
"description": "Delete a user from the organization. Only owners and admins can remove users; owners cannot be removed, and admins cannot remove themselves or other admins. Disabled on cloud.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userId": {
"type": "string"
}
},
"required": [
"userId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.assignPermissions": {
"post": {
"operationId": "user-assignPermissions",
"summary": "Assign member permissions",
"description": "Update permissions for a specific member in the organization. Only the organization owner can assign permissions. Git provider and server access restrictions require a valid license.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
}
},
"accessedGitProviders": {
"type": "array",
"items": {
"type": "string"
}
},
"accessedServers": {
"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",
"accessedGitProviders",
"accessedServers",
"canCreateProjects",
"canCreateServices",
"canDeleteProjects",
"canDeleteServices",
"canAccessToDocker",
"canAccessToTraefikFiles",
"canAccessToAPI",
"canAccessToSSHKeys",
"canAccessToGitProviders",
"canDeleteEnvironments",
"canCreateEnvironments"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getInvitations": {
"get": {
"operationId": "user-getInvitations",
"summary": "Get pending invitations for current user",
"description": "Retrieve all pending organization invitations for the current user's email that have not yet expired.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getContainerMetrics": {
"get": {
"operationId": "user-getContainerMetrics",
"summary": "Get container metrics",
"description": "Fetch monitoring metrics for a specific container by querying the metrics endpoint. Requires an application name, metrics URL, and authentication token.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "url",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "token",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "appName",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "dataPoints",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.generateToken": {
"post": {
"operationId": "user-generateToken",
"summary": "Generate authentication token",
"description": "Generate a new authentication token for the current user.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.deleteApiKey": {
"post": {
"operationId": "user-deleteApiKey",
"summary": "Delete an API key",
"description": "Delete an API key by ID. Only the owner of the API key can delete it. Logs an audit event on success.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"apiKeyId": {
"type": "string"
}
},
"required": [
"apiKeyId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.createApiKey": {
"post": {
"operationId": "user-createApiKey",
"summary": "Create an API key",
"description": "Create a new API key for the current user, scoped to a specific organization. Supports optional rate limiting and request limiting configuration.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
},
"rateLimitEnabled": {
"type": "boolean"
},
"rateLimitTimeWindow": {
"type": "number"
},
"rateLimitMax": {
"type": "number"
},
"remaining": {
"type": "number"
},
"refillAmount": {
"type": "number"
},
"refillInterval": {
"type": "number"
}
},
"required": [
"name",
"metadata"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.checkUserOrganizations": {
"get": {
"operationId": "user-checkUserOrganizations",
"summary": "Check user organization count",
"description": "Return the number of organizations a user belongs to. Users can check their own count; admins and owners can check counts for members in the active organization.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "userId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.createUserWithCredentials": {
"post": {
"operationId": "user-createUserWithCredentials",
"summary": "Create user with credentials",
"description": "Create a new user with email and password and add them to the active organization with the specified role. Only available in self-hosted mode.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"password": {
"type": "string",
"minLength": 8
},
"role": {
"type": "string",
"minLength": 1
}
},
"required": [
"email",
"password",
"role"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.sendInvitation": {
"post": {
"operationId": "user-sendInvitation",
"summary": "Send invitation email",
"description": "Send an invitation email to a pending invitee using a configured email or Resend notification provider. Returns the generated invite link. Disabled on cloud.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"invitationId": {
"type": "string",
"minLength": 1
},
"notificationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"invitationId",
"notificationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.getBookmarkedTemplates": {
"get": {
"operationId": "user-getBookmarkedTemplates",
"summary": "Get bookmarked templates",
"description": "Retrieve the list of template IDs that the current user has bookmarked.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/user.toggleTemplateBookmark": {
"post": {
"operationId": "user-toggleTemplateBookmark",
"summary": "Toggle template bookmark",
"description": "Add or remove a template from the current user's bookmarks. Returns whether the template is now bookmarked.",
"tags": [
"user"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"templateId": {
"type": "string",
"minLength": 1
}
},
"required": [
"templateId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.one": {
"get": {
"operationId": "ai-one",
"summary": "Get AI settings by ID",
"description": "Returns a single AI provider configuration by its ID.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "aiId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.getModels": {
"get": {
"operationId": "ai-getModels",
"summary": "List available AI models",
"description": "Fetches the list of models from the given AI provider URL. Supports OpenAI-compatible, Ollama, Gemini, Perplexity, ZAI, and MiniMax providers.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "apiUrl",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "apiKey",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.create": {
"post": {
"operationId": "ai-create",
"summary": "Create AI provider",
"description": "Saves a new AI provider configuration (API URL, key, model) for the current organization.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.update": {
"post": {
"operationId": "ai-update",
"summary": "Update AI provider",
"description": "Updates an existing AI provider configuration for the current organization.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.getAll": {
"get": {
"operationId": "ai-getAll",
"summary": "List all AI providers",
"description": "Returns all AI provider configurations for the current organization.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.get": {
"get": {
"operationId": "ai-get",
"summary": "Get AI provider",
"description": "Returns a single AI provider configuration by its ID.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "aiId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.delete": {
"post": {
"operationId": "ai-delete",
"summary": "Delete AI provider",
"description": "Removes an AI provider configuration by its ID.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"aiId": {
"type": "string"
}
},
"required": [
"aiId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.getEnabledProviders": {
"get": {
"operationId": "ai-getEnabledProviders",
"summary": "List enabled AI providers",
"description": "Returns a lightweight list of enabled AI providers (ID, name, model) for the current organization, suitable for dropdown selectors.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.analyzeLogs": {
"post": {
"operationId": "ai-analyzeLogs",
"summary": "Analyze logs with AI",
"description": "Sends build or runtime logs to the specified AI provider for analysis. Returns a summary of issues found, root causes, and suggested fixes.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"aiId": {
"type": "string",
"minLength": 1
},
"logs": {
"type": "string",
"minLength": 1
},
"context": {
"type": "string",
"enum": [
"build",
"runtime"
]
}
},
"required": [
"aiId",
"logs",
"context"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.testConnection": {
"post": {
"operationId": "ai-testConnection",
"summary": "Test AI provider connection",
"description": "Sends a minimal prompt to the specified AI provider and model to verify the API URL, key, and model are valid and reachable.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"apiUrl": {
"type": "string",
"minLength": 1
},
"apiKey": {
"type": "string"
},
"model": {
"type": "string",
"minLength": 1
}
},
"required": [
"apiUrl",
"apiKey",
"model"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.suggest": {
"post": {
"operationId": "ai-suggest",
"summary": "Suggest deployment variants",
"description": "Uses AI to generate deployment configuration suggestions (docker-compose variants) based on the user's input prompt.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"aiId": {
"type": "string"
},
"input": {
"type": "string"
},
"serverId": {
"type": "string"
}
},
"required": [
"aiId",
"input"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/ai.deploy": {
"post": {
"operationId": "ai-deploy",
"summary": "Deploy AI suggestion",
"description": "Deploys an AI-generated suggestion by creating a compose service with its docker-compose file, environment variables, domains, and config file mounts.",
"tags": [
"ai"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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"
]
}
},
"configFiles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filePath": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string",
"minLength": 1
}
},
"required": [
"filePath",
"content"
]
}
}
},
"required": [
"environmentId",
"id",
"dockerCompose",
"envVariables",
"name",
"description"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.create": {
"post": {
"operationId": "organization-create",
"summary": "Create an organization",
"description": "Create a new organization and add the current user as the owner. Only owners and admins can create organizations in self-hosted mode.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"logo": {
"type": "string"
}
},
"required": [
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.all": {
"get": {
"operationId": "organization-all",
"summary": "List all organizations",
"description": "Retrieve all organizations the current user is a member of, including their membership details.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.one": {
"get": {
"operationId": "organization-one",
"summary": "Get an organization by ID",
"description": "Retrieve a single organization by its ID. The current user must be a member of the organization.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "organizationId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.update": {
"post": {
"operationId": "organization-update",
"summary": "Update an organization",
"description": "Update the name and logo of an organization. Only the organization owner can perform this action.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"organizationId": {
"type": "string"
},
"name": {
"type": "string"
},
"logo": {
"type": "string"
}
},
"required": [
"organizationId",
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.delete": {
"post": {
"operationId": "organization-delete",
"summary": "Delete an organization",
"description": "Delete an organization by ID. Only the owner can delete it, and they must retain at least one organization.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"organizationId": {
"type": "string"
}
},
"required": [
"organizationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.inviteMember": {
"post": {
"operationId": "organization-inviteMember",
"summary": "Invite a member to organization",
"description": "Create a pending invitation for a user by email to join the active organization with the specified role. Checks for existing membership and pending invitations. Supports custom roles.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"role": {
"type": "string",
"minLength": 1
}
},
"required": [
"email",
"role"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.allInvitations": {
"get": {
"operationId": "organization-allInvitations",
"summary": "List all organization invitations",
"description": "Retrieve all invitations for the active organization, ordered by status and expiration date.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.removeInvitation": {
"post": {
"operationId": "organization-removeInvitation",
"summary": "Remove an invitation",
"description": "Delete a pending invitation by ID. Only invitations belonging to the active organization can be removed.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"invitationId": {
"type": "string"
}
},
"required": [
"invitationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.updateMemberRole": {
"post": {
"operationId": "organization-updateMemberRole",
"summary": "Update member role",
"description": "Change the role of a member in the active organization. Users cannot change their own role, and the owner role is nontransferable. Only owners can change admin roles. Supports custom roles.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"memberId": {
"type": "string"
},
"role": {
"type": "string",
"minLength": 1
}
},
"required": [
"memberId",
"role"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.setDefault": {
"post": {
"operationId": "organization-setDefault",
"summary": "Set default organization",
"description": "Set an organization as the default for the current user. Unsets any previous default and marks the specified organization as the new default.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"organizationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"organizationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/organization.active": {
"get": {
"operationId": "organization-active",
"summary": "Get active organization",
"description": "Retrieve the organization that is currently active in the user's session. Returns null if no organization is active.",
"tags": [
"organization"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/licenseKey.activate": {
"post": {
"operationId": "licenseKey-activate",
"tags": [
"licenseKey"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"licenseKey": {
"type": "string",
"minLength": 1
}
},
"required": [
"licenseKey"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/licenseKey.validate": {
"post": {
"operationId": "licenseKey-validate",
"tags": [
"licenseKey"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/licenseKey.deactivate": {
"post": {
"operationId": "licenseKey-deactivate",
"tags": [
"licenseKey"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/licenseKey.getEnterpriseSettings": {
"get": {
"operationId": "licenseKey-getEnterpriseSettings",
"tags": [
"licenseKey"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/licenseKey.haveValidLicenseKey": {
"get": {
"operationId": "licenseKey-haveValidLicenseKey",
"tags": [
"licenseKey"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/licenseKey.updateEnterpriseSettings": {
"post": {
"operationId": "licenseKey-updateEnterpriseSettings",
"tags": [
"licenseKey"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"enableEnterpriseFeatures": {
"type": "boolean"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.showSignInWithSSO": {
"get": {
"operationId": "sso-showSignInWithSSO",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.listProviders": {
"get": {
"operationId": "sso-listProviders",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.getTrustedOrigins": {
"get": {
"operationId": "sso-getTrustedOrigins",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.one": {
"get": {
"operationId": "sso-one",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "providerId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.update": {
"post": {
"operationId": "sso-update",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"providerId": {
"type": "string"
},
"issuer": {
"type": "string"
},
"domains": {
"type": "array",
"items": {
"type": "string"
}
},
"oidcConfig": {
"type": "object",
"properties": {
"clientId": {
"type": "string"
},
"clientSecret": {
"type": "string"
},
"authorizationEndpoint": {
"type": "string"
},
"tokenEndpoint": {
"type": "string"
},
"userInfoEndpoint": {
"type": "string"
},
"tokenEndpointAuthentication": {
"type": "string",
"enum": [
"client_secret_post",
"client_secret_basic"
]
},
"jwksEndpoint": {
"type": "string"
},
"discoveryEndpoint": {
"type": "string"
},
"skipDiscovery": {
"type": "boolean"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"pkce": {
"default": true,
"type": "boolean"
},
"mapping": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"emailVerified": {
"type": "string"
},
"name": {
"type": "string"
},
"image": {
"type": "string"
},
"extraFields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"id",
"email",
"name"
]
}
},
"required": [
"clientId",
"clientSecret"
]
},
"samlConfig": {
"type": "object",
"properties": {
"entryPoint": {
"type": "string"
},
"cert": {
"type": "string"
},
"callbackUrl": {
"type": "string"
},
"audience": {
"type": "string"
},
"idpMetadata": {
"type": "object",
"properties": {
"metadata": {
"type": "string"
},
"entityID": {
"type": "string"
},
"cert": {
"type": "string"
},
"privateKey": {
"type": "string"
},
"privateKeyPass": {
"type": "string"
},
"isAssertionEncrypted": {
"type": "boolean"
},
"encPrivateKey": {
"type": "string"
},
"encPrivateKeyPass": {
"type": "string"
},
"singleSignOnService": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Binding": {
"type": "string"
},
"Location": {
"type": "string"
}
},
"required": [
"Binding",
"Location"
]
}
}
}
},
"spMetadata": {
"type": "object",
"properties": {
"metadata": {
"type": "string"
},
"entityID": {
"type": "string"
},
"binding": {
"type": "string"
},
"privateKey": {
"type": "string"
},
"privateKeyPass": {
"type": "string"
},
"isAssertionEncrypted": {
"type": "boolean"
},
"encPrivateKey": {
"type": "string"
},
"encPrivateKeyPass": {
"type": "string"
}
}
},
"wantAssertionsSigned": {
"type": "boolean"
},
"authnRequestsSigned": {
"type": "boolean"
},
"signatureAlgorithm": {
"type": "string"
},
"digestAlgorithm": {
"type": "string"
},
"identifierFormat": {
"type": "string"
},
"privateKey": {
"type": "string"
},
"decryptionPvk": {
"type": "string"
},
"additionalParams": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"mapping": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"emailVerified": {
"type": "string"
},
"name": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"extraFields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"id",
"email",
"name"
]
}
},
"required": [
"entryPoint",
"cert",
"callbackUrl",
"spMetadata"
]
},
"organizationId": {
"type": "string"
},
"overrideUserInfo": {
"default": false,
"type": "boolean"
}
},
"required": [
"providerId",
"issuer",
"domains"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.deleteProvider": {
"post": {
"operationId": "sso-deleteProvider",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"providerId": {
"type": "string",
"minLength": 1
}
},
"required": [
"providerId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.register": {
"post": {
"operationId": "sso-register",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"providerId": {
"type": "string"
},
"issuer": {
"type": "string"
},
"domains": {
"type": "array",
"items": {
"type": "string"
}
},
"oidcConfig": {
"type": "object",
"properties": {
"clientId": {
"type": "string"
},
"clientSecret": {
"type": "string"
},
"authorizationEndpoint": {
"type": "string"
},
"tokenEndpoint": {
"type": "string"
},
"userInfoEndpoint": {
"type": "string"
},
"tokenEndpointAuthentication": {
"type": "string",
"enum": [
"client_secret_post",
"client_secret_basic"
]
},
"jwksEndpoint": {
"type": "string"
},
"discoveryEndpoint": {
"type": "string"
},
"skipDiscovery": {
"type": "boolean"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"pkce": {
"default": true,
"type": "boolean"
},
"mapping": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"emailVerified": {
"type": "string"
},
"name": {
"type": "string"
},
"image": {
"type": "string"
},
"extraFields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"id",
"email",
"name"
]
}
},
"required": [
"clientId",
"clientSecret"
]
},
"samlConfig": {
"type": "object",
"properties": {
"entryPoint": {
"type": "string"
},
"cert": {
"type": "string"
},
"callbackUrl": {
"type": "string"
},
"audience": {
"type": "string"
},
"idpMetadata": {
"type": "object",
"properties": {
"metadata": {
"type": "string"
},
"entityID": {
"type": "string"
},
"cert": {
"type": "string"
},
"privateKey": {
"type": "string"
},
"privateKeyPass": {
"type": "string"
},
"isAssertionEncrypted": {
"type": "boolean"
},
"encPrivateKey": {
"type": "string"
},
"encPrivateKeyPass": {
"type": "string"
},
"singleSignOnService": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Binding": {
"type": "string"
},
"Location": {
"type": "string"
}
},
"required": [
"Binding",
"Location"
]
}
}
}
},
"spMetadata": {
"type": "object",
"properties": {
"metadata": {
"type": "string"
},
"entityID": {
"type": "string"
},
"binding": {
"type": "string"
},
"privateKey": {
"type": "string"
},
"privateKeyPass": {
"type": "string"
},
"isAssertionEncrypted": {
"type": "boolean"
},
"encPrivateKey": {
"type": "string"
},
"encPrivateKeyPass": {
"type": "string"
}
}
},
"wantAssertionsSigned": {
"type": "boolean"
},
"authnRequestsSigned": {
"type": "boolean"
},
"signatureAlgorithm": {
"type": "string"
},
"digestAlgorithm": {
"type": "string"
},
"identifierFormat": {
"type": "string"
},
"privateKey": {
"type": "string"
},
"decryptionPvk": {
"type": "string"
},
"additionalParams": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"mapping": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"emailVerified": {
"type": "string"
},
"name": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"extraFields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"id",
"email",
"name"
]
}
},
"required": [
"entryPoint",
"cert",
"callbackUrl",
"spMetadata"
]
},
"organizationId": {
"type": "string"
},
"overrideUserInfo": {
"default": false,
"type": "boolean"
}
},
"required": [
"providerId",
"issuer",
"domains"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.addTrustedOrigin": {
"post": {
"operationId": "sso-addTrustedOrigin",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"origin": {
"type": "string",
"minLength": 1
}
},
"required": [
"origin"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.removeTrustedOrigin": {
"post": {
"operationId": "sso-removeTrustedOrigin",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"origin": {
"type": "string",
"minLength": 1
}
},
"required": [
"origin"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/sso.updateTrustedOrigin": {
"post": {
"operationId": "sso-updateTrustedOrigin",
"tags": [
"sso"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"oldOrigin": {
"type": "string",
"minLength": 1
},
"newOrigin": {
"type": "string",
"minLength": 1
}
},
"required": [
"oldOrigin",
"newOrigin"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/whitelabeling.get": {
"get": {
"operationId": "whitelabeling-get",
"tags": [
"whitelabeling"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/whitelabeling.update": {
"post": {
"operationId": "whitelabeling-update",
"tags": [
"whitelabeling"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"whitelabelingConfig": {
"type": "object",
"properties": {
"appName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"appDescription": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"logoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"faviconUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customCss": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"loginLogoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"supportUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"docsUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"errorPageTitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"errorPageDescription": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metaTitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"footerText": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"appName",
"appDescription",
"logoUrl",
"faviconUrl",
"customCss",
"loginLogoUrl",
"supportUrl",
"docsUrl",
"errorPageTitle",
"errorPageDescription",
"metaTitle",
"footerText"
]
}
},
"required": [
"whitelabelingConfig"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/whitelabeling.reset": {
"post": {
"operationId": "whitelabeling-reset",
"tags": [
"whitelabeling"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/whitelabeling.getPublic": {
"get": {
"operationId": "whitelabeling-getPublic",
"tags": [
"whitelabeling"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/customRole.all": {
"get": {
"operationId": "customRole-all",
"tags": [
"customRole"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/customRole.create": {
"post": {
"operationId": "customRole-create",
"tags": [
"customRole"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"roleName": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"permissions": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"roleName",
"permissions"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/customRole.update": {
"post": {
"operationId": "customRole-update",
"tags": [
"customRole"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"roleName": {
"type": "string",
"minLength": 1
},
"newRoleName": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"permissions": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"roleName",
"permissions"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/customRole.remove": {
"post": {
"operationId": "customRole-remove",
"tags": [
"customRole"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"roleName": {
"type": "string",
"minLength": 1
}
},
"required": [
"roleName"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/customRole.membersByRole": {
"get": {
"operationId": "customRole-membersByRole",
"tags": [
"customRole"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "roleName",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/customRole.getStatements": {
"get": {
"operationId": "customRole-getStatements",
"tags": [
"customRole"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/auditLog.all": {
"get": {
"operationId": "auditLog-all",
"tags": [
"auditLog"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "userId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "userEmail",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "resourceName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "action",
"schema": {
"type": "string",
"enum": [
"create",
"update",
"delete",
"deploy",
"cancel",
"redeploy",
"login",
"logout"
]
}
},
{
"in": "query",
"name": "resourceType",
"schema": {
"type": "string",
"enum": [
"project",
"service",
"environment",
"deployment",
"user",
"customRole",
"domain",
"certificate",
"registry",
"server",
"sshKey",
"gitProvider",
"notification",
"settings",
"session"
]
}
},
{
"in": "query",
"name": "from",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "to",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 50,
"type": "number",
"minimum": 1,
"maximum": 500
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/schedule.create": {
"post": {
"operationId": "schedule-create",
"summary": "Create a scheduled job",
"description": "Creates a new scheduled job for an application or compose service. If enabled, the job is automatically scheduled using the provided cron expression and timezone.",
"tags": [
"schedule"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"scheduleId": {
"type": "string"
},
"name": {
"type": "string"
},
"cronExpression": {
"type": "string"
},
"appName": {
"type": "string"
},
"serviceName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"shellType": {
"type": "string",
"enum": [
"bash",
"sh"
]
},
"scheduleType": {
"type": "string",
"enum": [
"application",
"compose",
"server",
"dokploy-server"
]
},
"command": {
"type": "string"
},
"script": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"applicationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"userId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"enabled": {
"type": "boolean"
},
"timezone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"name",
"cronExpression",
"command"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/schedule.update": {
"post": {
"operationId": "schedule-update",
"summary": "Update a scheduled job",
"description": "Updates an existing scheduled job configuration. Reschedules or removes the job depending on the enabled state.",
"tags": [
"schedule"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"shellType": {
"type": "string",
"enum": [
"bash",
"sh"
]
},
"scheduleType": {
"type": "string",
"enum": [
"application",
"compose",
"server",
"dokploy-server"
]
},
"command": {
"type": "string"
},
"script": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"applicationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"serverId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"userId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"enabled": {
"type": "boolean"
},
"timezone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"scheduleId",
"name",
"cronExpression",
"command"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/schedule.delete": {
"post": {
"operationId": "schedule-delete",
"summary": "Delete a scheduled job",
"description": "Permanently removes a scheduled job and unschedules any associated cron job.",
"tags": [
"schedule"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"scheduleId": {
"type": "string"
}
},
"required": [
"scheduleId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/schedule.list": {
"get": {
"operationId": "schedule-list",
"summary": "List scheduled jobs",
"description": "Returns all scheduled jobs for a given service (application, compose, server, or dokploy-server), including their deployment history.",
"tags": [
"schedule"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "id",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "scheduleType",
"schema": {
"type": "string",
"enum": [
"application",
"compose",
"server",
"dokploy-server"
]
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/schedule.one": {
"get": {
"operationId": "schedule-one",
"summary": "Get a scheduled job",
"description": "Returns the details of a specific scheduled job by its ID.",
"tags": [
"schedule"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "scheduleId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/schedule.runManually": {
"post": {
"operationId": "schedule-runManually",
"summary": "Run a scheduled job manually",
"description": "Immediately executes a scheduled job outside of its normal cron schedule.",
"tags": [
"schedule"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"scheduleId": {
"type": "string",
"minLength": 1
}
},
"required": [
"scheduleId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/rollback.delete": {
"post": {
"operationId": "rollback-delete",
"summary": "Delete a rollback",
"description": "Permanently removes a rollback record by its ID.",
"tags": [
"rollback"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"rollbackId": {
"type": "string",
"minLength": 1
}
},
"required": [
"rollbackId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/rollback.rollback": {
"post": {
"operationId": "rollback-rollback",
"summary": "Perform a rollback",
"description": "Rolls back an application to a previous deployment by restoring its Docker image and redeploying.",
"tags": [
"rollback"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"rollbackId": {
"type": "string",
"minLength": 1
}
},
"required": [
"rollbackId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/volumeBackups.list": {
"get": {
"operationId": "volumeBackups-list",
"summary": "List volume backups",
"description": "Returns all volume backup configurations for a given service, including related service details.",
"tags": [
"volumeBackups"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "id",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "volumeBackupType",
"schema": {
"type": "string",
"enum": [
"application",
"postgres",
"mysql",
"mariadb",
"mongo",
"redis",
"compose",
"libsql"
]
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/volumeBackups.create": {
"post": {
"operationId": "volumeBackups-create",
"summary": "Create a volume backup",
"description": "Creates a new volume backup configuration for a service. If enabled, automatically schedules the backup using the provided cron expression.",
"tags": [
"volumeBackups"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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",
"libsql"
]
},
"appName": {
"type": "string"
},
"serviceName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"turnOff": {
"type": "boolean"
},
"cronExpression": {
"type": "string"
},
"keepLatestCount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"applicationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"postgresId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mariadbId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mongoId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mysqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"redisId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"libsqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"destinationId": {
"type": "string"
}
},
"required": [
"name",
"volumeName",
"prefix",
"cronExpression",
"destinationId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/volumeBackups.one": {
"get": {
"operationId": "volumeBackups-one",
"summary": "Get a volume backup",
"description": "Returns the details of a specific volume backup configuration by its ID.",
"tags": [
"volumeBackups"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "volumeBackupId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/volumeBackups.delete": {
"post": {
"operationId": "volumeBackups-delete",
"summary": "Delete a volume backup",
"description": "Permanently removes a volume backup configuration by its ID.",
"tags": [
"volumeBackups"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"volumeBackupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"volumeBackupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/volumeBackups.update": {
"post": {
"operationId": "volumeBackups-update",
"summary": "Update a volume backup",
"description": "Updates an existing volume backup configuration. Reschedules or removes the backup job depending on the enabled state.",
"tags": [
"volumeBackups"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"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",
"libsql"
]
},
"appName": {
"type": "string"
},
"serviceName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"turnOff": {
"type": "boolean"
},
"cronExpression": {
"type": "string"
},
"keepLatestCount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"applicationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"postgresId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mariadbId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mongoId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mysqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"redisId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"libsqlId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"destinationId": {
"type": "string"
},
"volumeBackupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"name",
"volumeName",
"prefix",
"cronExpression",
"destinationId",
"volumeBackupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/volumeBackups.runManually": {
"post": {
"operationId": "volumeBackups-runManually",
"summary": "Run a volume backup manually",
"description": "Immediately executes a volume backup outside of its normal cron schedule.",
"tags": [
"volumeBackups"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"volumeBackupId": {
"type": "string",
"minLength": 1
}
},
"required": [
"volumeBackupId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/environment.create": {
"post": {
"operationId": "environment-create",
"summary": "Create environment",
"description": "Creates a new environment within a project. The name 'production' is reserved and cannot be used. Checks creation permissions and logs an audit event.",
"tags": [
"environment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1
}
},
"required": [
"name",
"projectId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/environment.one": {
"get": {
"operationId": "environment-one",
"summary": "Get environment",
"description": "Returns a single environment by ID with all its services. Non-admin users only see services they have been granted access to.",
"tags": [
"environment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "environmentId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/environment.byProjectId": {
"get": {
"operationId": "environment-byProjectId",
"summary": "List environments by project",
"description": "Returns all environments for a given project. Non-admin users only see environments and services they have been granted access to.",
"tags": [
"environment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/environment.remove": {
"post": {
"operationId": "environment-remove",
"summary": "Delete environment",
"description": "Deletes an environment by ID. The default environment cannot be deleted. Checks deletion permissions and environment access before removing.",
"tags": [
"environment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"environmentId": {
"type": "string",
"minLength": 1
}
},
"required": [
"environmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/environment.update": {
"post": {
"operationId": "environment-update",
"summary": "Update environment",
"description": "Updates an environment's name, description, or env variables. The default environment cannot be renamed. Checks environment access and env-var write permissions.",
"tags": [
"environment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"environmentId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"projectId": {
"type": "string"
},
"env": {
"type": "string"
}
},
"required": [
"environmentId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/environment.duplicate": {
"post": {
"operationId": "environment-duplicate",
"summary": "Duplicate environment",
"description": "Creates a copy of an existing environment including its services. Checks environment access and organization ownership before duplicating.",
"tags": [
"environment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"environmentId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
}
},
"required": [
"environmentId",
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/environment.search": {
"get": {
"operationId": "environment-search",
"summary": "Search environments",
"description": "Searches environments by name, description, or project with pagination. Non-admin users only see environments they have been granted access to.",
"tags": [
"environment"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "q",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "description",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "projectId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 20,
"type": "number",
"minimum": 1,
"maximum": 100
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"type": "number",
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.create": {
"post": {
"operationId": "tag-create",
"summary": "Create tag",
"description": "Creates a new tag with a name and color for the current organization. Tag names must be unique within the organization.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.all": {
"get": {
"operationId": "tag-all",
"summary": "List all tags",
"description": "Returns all tags for the current organization, ordered alphabetically by name.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.one": {
"get": {
"operationId": "tag-one",
"summary": "Get tag",
"description": "Returns a single tag by ID. Only returns tags belonging to the caller's organization.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "tagId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.update": {
"post": {
"operationId": "tag-update",
"summary": "Update tag",
"description": "Updates an existing tag's name and/or color. Verifies the tag belongs to the caller's organization. Tag names must remain unique.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tagId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"organizationId": {
"type": "string"
}
},
"required": [
"tagId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.remove": {
"post": {
"operationId": "tag-remove",
"summary": "Delete tag",
"description": "Deletes a tag by ID. Cascade-deletes all project-tag associations. Verifies the tag belongs to the caller's organization.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tagId": {
"type": "string",
"minLength": 1
}
},
"required": [
"tagId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.assignToProject": {
"post": {
"operationId": "tag-assignToProject",
"summary": "Assign tag to project",
"description": "Associates a tag with a project. Verifies that both the tag and project belong to the caller's organization and that the caller has project access.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1
},
"tagId": {
"type": "string",
"minLength": 1
}
},
"required": [
"projectId",
"tagId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.removeFromProject": {
"post": {
"operationId": "tag-removeFromProject",
"summary": "Remove tag from project",
"description": "Removes a tag-project association. Verifies that both the tag and project belong to the caller's organization and that the caller has project access.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1
},
"tagId": {
"type": "string",
"minLength": 1
}
},
"required": [
"projectId",
"tagId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/tag.bulkAssign": {
"post": {
"operationId": "tag-bulkAssign",
"summary": "Bulk assign tags to project",
"description": "Replaces all tag associations for a project with the provided list of tag IDs. Removes existing associations first, then inserts the new set.",
"tags": [
"tag"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1
},
"tagIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"required": [
"projectId",
"tagIds"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.create": {
"post": {
"operationId": "patch-create",
"summary": "Create patch",
"description": "Creates a new file patch for an application or compose service. Checks service-level permissions and logs an audit event.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"filePath": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"create",
"update",
"delete"
]
},
"enabled": {
"type": "boolean"
},
"applicationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"composeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"filePath",
"content"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.one": {
"get": {
"operationId": "patch-one",
"summary": "Get patch",
"description": "Returns a single patch by ID. Resolves the associated service to verify read permissions.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "patchId",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.byEntityId": {
"get": {
"operationId": "patch-byEntityId",
"summary": "List patches by entity",
"description": "Returns all patches associated with a given application or compose service.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "id",
"schema": {
"type": "string"
},
"required": true
},
{
"in": "query",
"name": "type",
"schema": {
"type": "string",
"enum": [
"application",
"compose"
]
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.update": {
"post": {
"operationId": "patch-update",
"summary": "Update patch",
"description": "Updates the content or configuration of an existing patch. Resolves the associated service to verify permissions and logs an audit event.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"patchId": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"create",
"update",
"delete"
]
},
"filePath": {
"type": "string",
"minLength": 1
},
"enabled": {
"type": "boolean"
},
"content": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"patchId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.delete": {
"post": {
"operationId": "patch-delete",
"summary": "Delete patch",
"description": "Deletes a patch by ID. Resolves the associated service to verify delete permissions and logs an audit event.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"patchId": {
"type": "string",
"minLength": 1
}
},
"required": [
"patchId"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.toggleEnabled": {
"post": {
"operationId": "patch-toggleEnabled",
"summary": "Toggle patch enabled state",
"description": "Enables or disables a patch without deleting it. Resolves the associated service to verify permissions and logs an audit event.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"patchId": {
"type": "string",
"minLength": 1
},
"enabled": {
"type": "boolean"
}
},
"required": [
"patchId",
"enabled"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.ensureRepo": {
"post": {
"operationId": "patch-ensureRepo",
"summary": "Ensure patch repository exists",
"description": "Ensures a patch repository is initialized for the given application or compose service. Creates the repo if it does not exist and logs an audit event.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"application",
"compose"
]
}
},
"required": [
"id",
"type"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.readRepoDirectories": {
"get": {
"operationId": "patch-readRepoDirectories",
"summary": "List patch repository directories",
"description": "Reads the directory listing at a given path inside the patch repository for an application or compose service.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "id",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "type",
"schema": {
"type": "string",
"enum": [
"application",
"compose"
]
},
"required": true
},
{
"in": "query",
"name": "repoPath",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.readRepoFile": {
"get": {
"operationId": "patch-readRepoFile",
"summary": "Read patch repository file",
"description": "Reads a file from the patch repository. For delete-type patches it returns the current repo content; otherwise returns the patch content if available, falling back to the repo file.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [
{
"in": "query",
"name": "id",
"schema": {
"type": "string",
"minLength": 1
},
"required": true
},
{
"in": "query",
"name": "type",
"schema": {
"type": "string",
"enum": [
"application",
"compose"
]
},
"required": true
},
{
"in": "query",
"name": "filePath",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.NOT_FOUND"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.saveFileAsPatch": {
"post": {
"operationId": "patch-saveFileAsPatch",
"summary": "Save file as patch",
"description": "Creates or updates a patch record from file content. If a patch already exists for the file path, it updates the existing patch; otherwise creates a new one.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"application",
"compose"
]
},
"filePath": {
"type": "string"
},
"content": {
"type": "string"
},
"patchType": {
"default": "update",
"type": "string",
"enum": [
"create",
"update"
]
}
},
"required": [
"id",
"type",
"filePath",
"content"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.markFileForDeletion": {
"post": {
"operationId": "patch-markFileForDeletion",
"summary": "Mark file for deletion",
"description": "Creates a delete-type patch that will remove the specified file from the service on next deployment. Logs an audit event.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"application",
"compose"
]
},
"filePath": {
"type": "string"
}
},
"required": [
"id",
"type",
"filePath"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
},
"/patch.cleanPatchRepos": {
"post": {
"operationId": "patch-cleanPatchRepos",
"summary": "Clean patch repositories",
"description": "Removes all patch repository working directories on the local or a specified remote server. Admin-only operation that logs an audit event.",
"tags": [
"patch"
],
"security": [
{
"Authorization": []
}
],
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"serverId": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Invalid input data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.BAD_REQUEST"
}
}
}
},
"401": {
"description": "Authorization not provided",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.UNAUTHORIZED"
}
}
}
},
"403": {
"description": "Insufficient access",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.FORBIDDEN"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"error.BAD_REQUEST": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The error message",
"example": "Invalid input data"
},
"code": {
"type": "string",
"description": "The error code",
"example": "BAD_REQUEST"
},
"issues": {
"description": "An array of issues that were responsible for the error",
"example": [],
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"additionalProperties": false
}
}
},
"required": [
"message",
"code"
],
"additionalProperties": false,
"title": "Invalid input data error (400)",
"description": "The error information",
"example": {
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}
},
"error.UNAUTHORIZED": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The error message",
"example": "Authorization not provided"
},
"code": {
"type": "string",
"description": "The error code",
"example": "UNAUTHORIZED"
},
"issues": {
"description": "An array of issues that were responsible for the error",
"example": [],
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"additionalProperties": false
}
}
},
"required": [
"message",
"code"
],
"additionalProperties": false,
"title": "Authorization not provided error (401)",
"description": "The error information",
"example": {
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}
},
"error.FORBIDDEN": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The error message",
"example": "Insufficient access"
},
"code": {
"type": "string",
"description": "The error code",
"example": "FORBIDDEN"
},
"issues": {
"description": "An array of issues that were responsible for the error",
"example": [],
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"additionalProperties": false
}
}
},
"required": [
"message",
"code"
],
"additionalProperties": false,
"title": "Insufficient access error (403)",
"description": "The error information",
"example": {
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}
},
"error.INTERNAL_SERVER_ERROR": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The error message",
"example": "Internal server error"
},
"code": {
"type": "string",
"description": "The error code",
"example": "INTERNAL_SERVER_ERROR"
},
"issues": {
"description": "An array of issues that were responsible for the error",
"example": [],
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"additionalProperties": false
}
}
},
"required": [
"message",
"code"
],
"additionalProperties": false,
"title": "Internal server error error (500)",
"description": "The error information",
"example": {
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}
},
"error.NOT_FOUND": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The error message",
"example": "Not found"
},
"code": {
"type": "string",
"description": "The error code",
"example": "NOT_FOUND"
},
"issues": {
"description": "An array of issues that were responsible for the error",
"example": [],
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"additionalProperties": false
}
}
},
"required": [
"message",
"code"
],
"additionalProperties": false,
"title": "Not found error (404)",
"description": "The error information",
"example": {
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}
}
},
"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."
}
}
},
"security": [
{
"apiKey": []
}
]
}