{ "openapi": "3.1.0", "info": { "title": "Coolify", "version": "0.1" }, "servers": [ { "url": "https:\/\/app.coolify.io\/api\/v1", "description": "Coolify Cloud API. Change the host to your own instance if you are self-hosting." } ], "paths": { "\/applications": { "get": { "tags": [ "Applications" ], "summary": "List", "description": "List all applications.", "operationId": "list-applications", "responses": { "200": { "description": "Get all applications.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/Application" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/public": { "post": { "tags": [ "Applications" ], "summary": "Create (Public)", "description": "Create new application based on a public git repository.", "operationId": "create-public-application", "requestBody": { "description": "Application object that needs to be created.", "required": true, "content": { "application\/json": { "schema": { "required": [ "project_uuid", "server_uuid", "environment_name", "environment_uuid", "git_repository", "git_branch", "build_pack", "ports_exposes" ], "properties": { "project_uuid": { "type": "string", "description": "The project UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "environment_name": { "type": "string", "description": "The environment name. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "The environment UUID. You need to provide at least one of environment_name or environment_uuid." }, "git_repository": { "type": "string", "description": "The git repository URL." }, "git_branch": { "type": "string", "description": "The git branch." }, "build_pack": { "type": "string", "enum": [ "nixpacks", "static", "dockerfile", "dockercompose" ], "description": "The build pack type." }, "ports_exposes": { "type": "string", "description": "The ports to expose." }, "destination_uuid": { "type": "string", "description": "The destination UUID." }, "name": { "type": "string", "description": "The application name." }, "description": { "type": "string", "description": "The application description." }, "domains": { "type": "string", "description": "The application domains." }, "git_commit_sha": { "type": "string", "description": "The git commit SHA." }, "docker_registry_image_name": { "type": "string", "description": "The docker registry image name." }, "docker_registry_image_tag": { "type": "string", "description": "The docker registry image tag." }, "is_static": { "type": "boolean", "description": "The flag to indicate if the application is static." }, "static_image": { "type": "string", "enum": [ "nginx:alpine" ], "description": "The static image." }, "install_command": { "type": "string", "description": "The install command." }, "build_command": { "type": "string", "description": "The build command." }, "start_command": { "type": "string", "description": "The start command." }, "ports_mappings": { "type": "string", "description": "The ports mappings." }, "base_directory": { "type": "string", "description": "The base directory for all commands." }, "publish_directory": { "type": "string", "description": "The publish directory." }, "health_check_enabled": { "type": "boolean", "description": "Health check enabled." }, "health_check_path": { "type": "string", "description": "Health check path." }, "health_check_port": { "type": "string", "nullable": true, "description": "Health check port." }, "health_check_host": { "type": "string", "nullable": true, "description": "Health check host." }, "health_check_method": { "type": "string", "description": "Health check method." }, "health_check_return_code": { "type": "integer", "description": "Health check return code." }, "health_check_scheme": { "type": "string", "description": "Health check scheme." }, "health_check_response_text": { "type": "string", "nullable": true, "description": "Health check response text." }, "health_check_interval": { "type": "integer", "description": "Health check interval in seconds." }, "health_check_timeout": { "type": "integer", "description": "Health check timeout in seconds." }, "health_check_retries": { "type": "integer", "description": "Health check retries count." }, "health_check_start_period": { "type": "integer", "description": "Health check start period in seconds." }, "limits_memory": { "type": "string", "description": "Memory limit." }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit." }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness." }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation." }, "limits_cpus": { "type": "string", "description": "CPU limit." }, "limits_cpuset": { "type": "string", "nullable": true, "description": "CPU set." }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares." }, "custom_labels": { "type": "string", "description": "Custom labels." }, "custom_docker_run_options": { "type": "string", "description": "Custom docker run options." }, "post_deployment_command": { "type": "string", "description": "Post deployment command." }, "post_deployment_command_container": { "type": "string", "description": "Post deployment command container." }, "pre_deployment_command": { "type": "string", "description": "Pre deployment command." }, "pre_deployment_command_container": { "type": "string", "description": "Pre deployment command container." }, "manual_webhook_secret_github": { "type": "string", "description": "Manual webhook secret for Github." }, "manual_webhook_secret_gitlab": { "type": "string", "description": "Manual webhook secret for Gitlab." }, "manual_webhook_secret_bitbucket": { "type": "string", "description": "Manual webhook secret for Bitbucket." }, "manual_webhook_secret_gitea": { "type": "string", "description": "Manual webhook secret for Gitea." }, "redirect": { "type": "string", "nullable": true, "description": "How to set redirect with Traefik \/ Caddy. www<->non-www.", "enum": [ "www", "non-www", "both" ] }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the application should be deployed instantly." }, "dockerfile": { "type": "string", "description": "The Dockerfile content." }, "docker_compose_location": { "type": "string", "description": "The Docker Compose location." }, "docker_compose_raw": { "type": "string", "description": "The Docker Compose raw content." }, "docker_compose_custom_start_command": { "type": "string", "description": "The Docker Compose custom start command." }, "docker_compose_custom_build_command": { "type": "string", "description": "The Docker Compose custom build command." }, "docker_compose_domains": { "type": "array", "description": "The Docker Compose domains." }, "watch_paths": { "type": "string", "description": "The watch paths." }, "use_build_server": { "type": "boolean", "nullable": true, "description": "Use build server." }, "is_http_basic_auth_enabled": { "type": "boolean", "description": "HTTP Basic Authentication enabled." }, "http_basic_auth_username": { "type": "string", "nullable": true, "description": "Username for HTTP Basic Authentication" }, "http_basic_auth_password": { "type": "string", "nullable": true, "description": "Password for HTTP Basic Authentication" }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "force_domain_override": { "type": "boolean", "description": "Force domain usage even if conflicts are detected. Default is false." } }, "type": "object" } } } }, "responses": { "201": { "description": "Application created successfully.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "409": { "description": "Domain conflicts detected.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Domain conflicts detected. Use force_domain_override=true to proceed." }, "warning": { "type": "string", "example": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior." }, "conflicts": { "type": "array", "items": { "properties": { "domain": { "type": "string", "example": "example.com" }, "resource_name": { "type": "string", "example": "My Application" }, "resource_uuid": { "type": "string", "nullable": true, "example": "abc123-def456" }, "resource_type": { "type": "string", "enum": [ "application", "service", "instance" ], "example": "application" }, "message": { "type": "string", "example": "Domain example.com is already in use by application 'My Application'" } }, "type": "object" } } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/private-github-app": { "post": { "tags": [ "Applications" ], "summary": "Create (Private - GH App)", "description": "Create new application based on a private repository through a Github App.", "operationId": "create-private-github-app-application", "requestBody": { "description": "Application object that needs to be created.", "required": true, "content": { "application\/json": { "schema": { "required": [ "project_uuid", "server_uuid", "environment_name", "environment_uuid", "github_app_uuid", "git_repository", "git_branch", "build_pack", "ports_exposes" ], "properties": { "project_uuid": { "type": "string", "description": "The project UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "environment_name": { "type": "string", "description": "The environment name. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "The environment UUID. You need to provide at least one of environment_name or environment_uuid." }, "github_app_uuid": { "type": "string", "description": "The Github App UUID." }, "git_repository": { "type": "string", "description": "The git repository URL." }, "git_branch": { "type": "string", "description": "The git branch." }, "ports_exposes": { "type": "string", "description": "The ports to expose." }, "destination_uuid": { "type": "string", "description": "The destination UUID." }, "build_pack": { "type": "string", "enum": [ "nixpacks", "static", "dockerfile", "dockercompose" ], "description": "The build pack type." }, "name": { "type": "string", "description": "The application name." }, "description": { "type": "string", "description": "The application description." }, "domains": { "type": "string", "description": "The application domains." }, "git_commit_sha": { "type": "string", "description": "The git commit SHA." }, "docker_registry_image_name": { "type": "string", "description": "The docker registry image name." }, "docker_registry_image_tag": { "type": "string", "description": "The docker registry image tag." }, "is_static": { "type": "boolean", "description": "The flag to indicate if the application is static." }, "static_image": { "type": "string", "enum": [ "nginx:alpine" ], "description": "The static image." }, "install_command": { "type": "string", "description": "The install command." }, "build_command": { "type": "string", "description": "The build command." }, "start_command": { "type": "string", "description": "The start command." }, "ports_mappings": { "type": "string", "description": "The ports mappings." }, "base_directory": { "type": "string", "description": "The base directory for all commands." }, "publish_directory": { "type": "string", "description": "The publish directory." }, "health_check_enabled": { "type": "boolean", "description": "Health check enabled." }, "health_check_path": { "type": "string", "description": "Health check path." }, "health_check_port": { "type": "string", "nullable": true, "description": "Health check port." }, "health_check_host": { "type": "string", "nullable": true, "description": "Health check host." }, "health_check_method": { "type": "string", "description": "Health check method." }, "health_check_return_code": { "type": "integer", "description": "Health check return code." }, "health_check_scheme": { "type": "string", "description": "Health check scheme." }, "health_check_response_text": { "type": "string", "nullable": true, "description": "Health check response text." }, "health_check_interval": { "type": "integer", "description": "Health check interval in seconds." }, "health_check_timeout": { "type": "integer", "description": "Health check timeout in seconds." }, "health_check_retries": { "type": "integer", "description": "Health check retries count." }, "health_check_start_period": { "type": "integer", "description": "Health check start period in seconds." }, "limits_memory": { "type": "string", "description": "Memory limit." }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit." }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness." }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation." }, "limits_cpus": { "type": "string", "description": "CPU limit." }, "limits_cpuset": { "type": "string", "nullable": true, "description": "CPU set." }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares." }, "custom_labels": { "type": "string", "description": "Custom labels." }, "custom_docker_run_options": { "type": "string", "description": "Custom docker run options." }, "post_deployment_command": { "type": "string", "description": "Post deployment command." }, "post_deployment_command_container": { "type": "string", "description": "Post deployment command container." }, "pre_deployment_command": { "type": "string", "description": "Pre deployment command." }, "pre_deployment_command_container": { "type": "string", "description": "Pre deployment command container." }, "manual_webhook_secret_github": { "type": "string", "description": "Manual webhook secret for Github." }, "manual_webhook_secret_gitlab": { "type": "string", "description": "Manual webhook secret for Gitlab." }, "manual_webhook_secret_bitbucket": { "type": "string", "description": "Manual webhook secret for Bitbucket." }, "manual_webhook_secret_gitea": { "type": "string", "description": "Manual webhook secret for Gitea." }, "redirect": { "type": "string", "nullable": true, "description": "How to set redirect with Traefik \/ Caddy. www<->non-www.", "enum": [ "www", "non-www", "both" ] }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the application should be deployed instantly." }, "dockerfile": { "type": "string", "description": "The Dockerfile content." }, "docker_compose_location": { "type": "string", "description": "The Docker Compose location." }, "docker_compose_raw": { "type": "string", "description": "The Docker Compose raw content." }, "docker_compose_custom_start_command": { "type": "string", "description": "The Docker Compose custom start command." }, "docker_compose_custom_build_command": { "type": "string", "description": "The Docker Compose custom build command." }, "docker_compose_domains": { "type": "array", "description": "The Docker Compose domains." }, "watch_paths": { "type": "string", "description": "The watch paths." }, "use_build_server": { "type": "boolean", "nullable": true, "description": "Use build server." }, "is_http_basic_auth_enabled": { "type": "boolean", "description": "HTTP Basic Authentication enabled." }, "http_basic_auth_username": { "type": "string", "nullable": true, "description": "Username for HTTP Basic Authentication" }, "http_basic_auth_password": { "type": "string", "nullable": true, "description": "Password for HTTP Basic Authentication" }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "force_domain_override": { "type": "boolean", "description": "Force domain usage even if conflicts are detected. Default is false." } }, "type": "object" } } } }, "responses": { "201": { "description": "Application created successfully.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "409": { "description": "Domain conflicts detected.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Domain conflicts detected. Use force_domain_override=true to proceed." }, "warning": { "type": "string", "example": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior." }, "conflicts": { "type": "array", "items": { "properties": { "domain": { "type": "string", "example": "example.com" }, "resource_name": { "type": "string", "example": "My Application" }, "resource_uuid": { "type": "string", "nullable": true, "example": "abc123-def456" }, "resource_type": { "type": "string", "enum": [ "application", "service", "instance" ], "example": "application" }, "message": { "type": "string", "example": "Domain example.com is already in use by application 'My Application'" } }, "type": "object" } } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/private-deploy-key": { "post": { "tags": [ "Applications" ], "summary": "Create (Private - Deploy Key)", "description": "Create new application based on a private repository through a Deploy Key.", "operationId": "create-private-deploy-key-application", "requestBody": { "description": "Application object that needs to be created.", "required": true, "content": { "application\/json": { "schema": { "required": [ "project_uuid", "server_uuid", "environment_name", "environment_uuid", "private_key_uuid", "git_repository", "git_branch", "build_pack", "ports_exposes" ], "properties": { "project_uuid": { "type": "string", "description": "The project UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "environment_name": { "type": "string", "description": "The environment name. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "The environment UUID. You need to provide at least one of environment_name or environment_uuid." }, "private_key_uuid": { "type": "string", "description": "The private key UUID." }, "git_repository": { "type": "string", "description": "The git repository URL." }, "git_branch": { "type": "string", "description": "The git branch." }, "ports_exposes": { "type": "string", "description": "The ports to expose." }, "destination_uuid": { "type": "string", "description": "The destination UUID." }, "build_pack": { "type": "string", "enum": [ "nixpacks", "static", "dockerfile", "dockercompose" ], "description": "The build pack type." }, "name": { "type": "string", "description": "The application name." }, "description": { "type": "string", "description": "The application description." }, "domains": { "type": "string", "description": "The application domains." }, "git_commit_sha": { "type": "string", "description": "The git commit SHA." }, "docker_registry_image_name": { "type": "string", "description": "The docker registry image name." }, "docker_registry_image_tag": { "type": "string", "description": "The docker registry image tag." }, "is_static": { "type": "boolean", "description": "The flag to indicate if the application is static." }, "static_image": { "type": "string", "enum": [ "nginx:alpine" ], "description": "The static image." }, "install_command": { "type": "string", "description": "The install command." }, "build_command": { "type": "string", "description": "The build command." }, "start_command": { "type": "string", "description": "The start command." }, "ports_mappings": { "type": "string", "description": "The ports mappings." }, "base_directory": { "type": "string", "description": "The base directory for all commands." }, "publish_directory": { "type": "string", "description": "The publish directory." }, "health_check_enabled": { "type": "boolean", "description": "Health check enabled." }, "health_check_path": { "type": "string", "description": "Health check path." }, "health_check_port": { "type": "string", "nullable": true, "description": "Health check port." }, "health_check_host": { "type": "string", "nullable": true, "description": "Health check host." }, "health_check_method": { "type": "string", "description": "Health check method." }, "health_check_return_code": { "type": "integer", "description": "Health check return code." }, "health_check_scheme": { "type": "string", "description": "Health check scheme." }, "health_check_response_text": { "type": "string", "nullable": true, "description": "Health check response text." }, "health_check_interval": { "type": "integer", "description": "Health check interval in seconds." }, "health_check_timeout": { "type": "integer", "description": "Health check timeout in seconds." }, "health_check_retries": { "type": "integer", "description": "Health check retries count." }, "health_check_start_period": { "type": "integer", "description": "Health check start period in seconds." }, "limits_memory": { "type": "string", "description": "Memory limit." }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit." }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness." }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation." }, "limits_cpus": { "type": "string", "description": "CPU limit." }, "limits_cpuset": { "type": "string", "nullable": true, "description": "CPU set." }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares." }, "custom_labels": { "type": "string", "description": "Custom labels." }, "custom_docker_run_options": { "type": "string", "description": "Custom docker run options." }, "post_deployment_command": { "type": "string", "description": "Post deployment command." }, "post_deployment_command_container": { "type": "string", "description": "Post deployment command container." }, "pre_deployment_command": { "type": "string", "description": "Pre deployment command." }, "pre_deployment_command_container": { "type": "string", "description": "Pre deployment command container." }, "manual_webhook_secret_github": { "type": "string", "description": "Manual webhook secret for Github." }, "manual_webhook_secret_gitlab": { "type": "string", "description": "Manual webhook secret for Gitlab." }, "manual_webhook_secret_bitbucket": { "type": "string", "description": "Manual webhook secret for Bitbucket." }, "manual_webhook_secret_gitea": { "type": "string", "description": "Manual webhook secret for Gitea." }, "redirect": { "type": "string", "nullable": true, "description": "How to set redirect with Traefik \/ Caddy. www<->non-www.", "enum": [ "www", "non-www", "both" ] }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the application should be deployed instantly." }, "dockerfile": { "type": "string", "description": "The Dockerfile content." }, "docker_compose_location": { "type": "string", "description": "The Docker Compose location." }, "docker_compose_raw": { "type": "string", "description": "The Docker Compose raw content." }, "docker_compose_custom_start_command": { "type": "string", "description": "The Docker Compose custom start command." }, "docker_compose_custom_build_command": { "type": "string", "description": "The Docker Compose custom build command." }, "docker_compose_domains": { "type": "array", "description": "The Docker Compose domains." }, "watch_paths": { "type": "string", "description": "The watch paths." }, "use_build_server": { "type": "boolean", "nullable": true, "description": "Use build server." }, "is_http_basic_auth_enabled": { "type": "boolean", "description": "HTTP Basic Authentication enabled." }, "http_basic_auth_username": { "type": "string", "nullable": true, "description": "Username for HTTP Basic Authentication" }, "http_basic_auth_password": { "type": "string", "nullable": true, "description": "Password for HTTP Basic Authentication" }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "force_domain_override": { "type": "boolean", "description": "Force domain usage even if conflicts are detected. Default is false." } }, "type": "object" } } } }, "responses": { "201": { "description": "Application created successfully.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "409": { "description": "Domain conflicts detected.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Domain conflicts detected. Use force_domain_override=true to proceed." }, "warning": { "type": "string", "example": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior." }, "conflicts": { "type": "array", "items": { "properties": { "domain": { "type": "string", "example": "example.com" }, "resource_name": { "type": "string", "example": "My Application" }, "resource_uuid": { "type": "string", "nullable": true, "example": "abc123-def456" }, "resource_type": { "type": "string", "enum": [ "application", "service", "instance" ], "example": "application" }, "message": { "type": "string", "example": "Domain example.com is already in use by application 'My Application'" } }, "type": "object" } } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/dockerfile": { "post": { "tags": [ "Applications" ], "summary": "Create (Dockerfile)", "description": "Create new application based on a simple Dockerfile.", "operationId": "create-dockerfile-application", "requestBody": { "description": "Application object that needs to be created.", "required": true, "content": { "application\/json": { "schema": { "required": [ "project_uuid", "server_uuid", "environment_name", "environment_uuid", "dockerfile" ], "properties": { "project_uuid": { "type": "string", "description": "The project UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "environment_name": { "type": "string", "description": "The environment name. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "The environment UUID. You need to provide at least one of environment_name or environment_uuid." }, "dockerfile": { "type": "string", "description": "The Dockerfile content." }, "build_pack": { "type": "string", "enum": [ "nixpacks", "static", "dockerfile", "dockercompose" ], "description": "The build pack type." }, "ports_exposes": { "type": "string", "description": "The ports to expose." }, "destination_uuid": { "type": "string", "description": "The destination UUID." }, "name": { "type": "string", "description": "The application name." }, "description": { "type": "string", "description": "The application description." }, "domains": { "type": "string", "description": "The application domains." }, "docker_registry_image_name": { "type": "string", "description": "The docker registry image name." }, "docker_registry_image_tag": { "type": "string", "description": "The docker registry image tag." }, "ports_mappings": { "type": "string", "description": "The ports mappings." }, "base_directory": { "type": "string", "description": "The base directory for all commands." }, "health_check_enabled": { "type": "boolean", "description": "Health check enabled." }, "health_check_path": { "type": "string", "description": "Health check path." }, "health_check_port": { "type": "string", "nullable": true, "description": "Health check port." }, "health_check_host": { "type": "string", "nullable": true, "description": "Health check host." }, "health_check_method": { "type": "string", "description": "Health check method." }, "health_check_return_code": { "type": "integer", "description": "Health check return code." }, "health_check_scheme": { "type": "string", "description": "Health check scheme." }, "health_check_response_text": { "type": "string", "nullable": true, "description": "Health check response text." }, "health_check_interval": { "type": "integer", "description": "Health check interval in seconds." }, "health_check_timeout": { "type": "integer", "description": "Health check timeout in seconds." }, "health_check_retries": { "type": "integer", "description": "Health check retries count." }, "health_check_start_period": { "type": "integer", "description": "Health check start period in seconds." }, "limits_memory": { "type": "string", "description": "Memory limit." }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit." }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness." }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation." }, "limits_cpus": { "type": "string", "description": "CPU limit." }, "limits_cpuset": { "type": "string", "nullable": true, "description": "CPU set." }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares." }, "custom_labels": { "type": "string", "description": "Custom labels." }, "custom_docker_run_options": { "type": "string", "description": "Custom docker run options." }, "post_deployment_command": { "type": "string", "description": "Post deployment command." }, "post_deployment_command_container": { "type": "string", "description": "Post deployment command container." }, "pre_deployment_command": { "type": "string", "description": "Pre deployment command." }, "pre_deployment_command_container": { "type": "string", "description": "Pre deployment command container." }, "manual_webhook_secret_github": { "type": "string", "description": "Manual webhook secret for Github." }, "manual_webhook_secret_gitlab": { "type": "string", "description": "Manual webhook secret for Gitlab." }, "manual_webhook_secret_bitbucket": { "type": "string", "description": "Manual webhook secret for Bitbucket." }, "manual_webhook_secret_gitea": { "type": "string", "description": "Manual webhook secret for Gitea." }, "redirect": { "type": "string", "nullable": true, "description": "How to set redirect with Traefik \/ Caddy. www<->non-www.", "enum": [ "www", "non-www", "both" ] }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the application should be deployed instantly." }, "use_build_server": { "type": "boolean", "nullable": true, "description": "Use build server." }, "is_http_basic_auth_enabled": { "type": "boolean", "description": "HTTP Basic Authentication enabled." }, "http_basic_auth_username": { "type": "string", "nullable": true, "description": "Username for HTTP Basic Authentication" }, "http_basic_auth_password": { "type": "string", "nullable": true, "description": "Password for HTTP Basic Authentication" }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "force_domain_override": { "type": "boolean", "description": "Force domain usage even if conflicts are detected. Default is false." } }, "type": "object" } } } }, "responses": { "201": { "description": "Application created successfully.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "409": { "description": "Domain conflicts detected.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Domain conflicts detected. Use force_domain_override=true to proceed." }, "warning": { "type": "string", "example": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior." }, "conflicts": { "type": "array", "items": { "properties": { "domain": { "type": "string", "example": "example.com" }, "resource_name": { "type": "string", "example": "My Application" }, "resource_uuid": { "type": "string", "nullable": true, "example": "abc123-def456" }, "resource_type": { "type": "string", "enum": [ "application", "service", "instance" ], "example": "application" }, "message": { "type": "string", "example": "Domain example.com is already in use by application 'My Application'" } }, "type": "object" } } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/dockerimage": { "post": { "tags": [ "Applications" ], "summary": "Create (Docker Image)", "description": "Create new application based on a prebuilt docker image", "operationId": "create-dockerimage-application", "requestBody": { "description": "Application object that needs to be created.", "required": true, "content": { "application\/json": { "schema": { "required": [ "project_uuid", "server_uuid", "environment_name", "environment_uuid", "docker_registry_image_name", "ports_exposes" ], "properties": { "project_uuid": { "type": "string", "description": "The project UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "environment_name": { "type": "string", "description": "The environment name. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "The environment UUID. You need to provide at least one of environment_name or environment_uuid." }, "docker_registry_image_name": { "type": "string", "description": "The docker registry image name." }, "docker_registry_image_tag": { "type": "string", "description": "The docker registry image tag." }, "ports_exposes": { "type": "string", "description": "The ports to expose." }, "destination_uuid": { "type": "string", "description": "The destination UUID." }, "name": { "type": "string", "description": "The application name." }, "description": { "type": "string", "description": "The application description." }, "domains": { "type": "string", "description": "The application domains." }, "ports_mappings": { "type": "string", "description": "The ports mappings." }, "health_check_enabled": { "type": "boolean", "description": "Health check enabled." }, "health_check_path": { "type": "string", "description": "Health check path." }, "health_check_port": { "type": "string", "nullable": true, "description": "Health check port." }, "health_check_host": { "type": "string", "nullable": true, "description": "Health check host." }, "health_check_method": { "type": "string", "description": "Health check method." }, "health_check_return_code": { "type": "integer", "description": "Health check return code." }, "health_check_scheme": { "type": "string", "description": "Health check scheme." }, "health_check_response_text": { "type": "string", "nullable": true, "description": "Health check response text." }, "health_check_interval": { "type": "integer", "description": "Health check interval in seconds." }, "health_check_timeout": { "type": "integer", "description": "Health check timeout in seconds." }, "health_check_retries": { "type": "integer", "description": "Health check retries count." }, "health_check_start_period": { "type": "integer", "description": "Health check start period in seconds." }, "limits_memory": { "type": "string", "description": "Memory limit." }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit." }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness." }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation." }, "limits_cpus": { "type": "string", "description": "CPU limit." }, "limits_cpuset": { "type": "string", "nullable": true, "description": "CPU set." }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares." }, "custom_labels": { "type": "string", "description": "Custom labels." }, "custom_docker_run_options": { "type": "string", "description": "Custom docker run options." }, "post_deployment_command": { "type": "string", "description": "Post deployment command." }, "post_deployment_command_container": { "type": "string", "description": "Post deployment command container." }, "pre_deployment_command": { "type": "string", "description": "Pre deployment command." }, "pre_deployment_command_container": { "type": "string", "description": "Pre deployment command container." }, "manual_webhook_secret_github": { "type": "string", "description": "Manual webhook secret for Github." }, "manual_webhook_secret_gitlab": { "type": "string", "description": "Manual webhook secret for Gitlab." }, "manual_webhook_secret_bitbucket": { "type": "string", "description": "Manual webhook secret for Bitbucket." }, "manual_webhook_secret_gitea": { "type": "string", "description": "Manual webhook secret for Gitea." }, "redirect": { "type": "string", "nullable": true, "description": "How to set redirect with Traefik \/ Caddy. www<->non-www.", "enum": [ "www", "non-www", "both" ] }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the application should be deployed instantly." }, "use_build_server": { "type": "boolean", "nullable": true, "description": "Use build server." }, "is_http_basic_auth_enabled": { "type": "boolean", "description": "HTTP Basic Authentication enabled." }, "http_basic_auth_username": { "type": "string", "nullable": true, "description": "Username for HTTP Basic Authentication" }, "http_basic_auth_password": { "type": "string", "nullable": true, "description": "Password for HTTP Basic Authentication" }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "force_domain_override": { "type": "boolean", "description": "Force domain usage even if conflicts are detected. Default is false." } }, "type": "object" } } } }, "responses": { "201": { "description": "Application created successfully.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "409": { "description": "Domain conflicts detected.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Domain conflicts detected. Use force_domain_override=true to proceed." }, "warning": { "type": "string", "example": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior." }, "conflicts": { "type": "array", "items": { "properties": { "domain": { "type": "string", "example": "example.com" }, "resource_name": { "type": "string", "example": "My Application" }, "resource_uuid": { "type": "string", "nullable": true, "example": "abc123-def456" }, "resource_type": { "type": "string", "enum": [ "application", "service", "instance" ], "example": "application" }, "message": { "type": "string", "example": "Domain example.com is already in use by application 'My Application'" } }, "type": "object" } } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/dockercompose": { "post": { "tags": [ "Applications" ], "summary": "Create (Docker Compose)", "description": "Create new application based on a docker-compose file.", "operationId": "create-dockercompose-application", "requestBody": { "description": "Application object that needs to be created.", "required": true, "content": { "application\/json": { "schema": { "required": [ "project_uuid", "server_uuid", "environment_name", "environment_uuid", "docker_compose_raw" ], "properties": { "project_uuid": { "type": "string", "description": "The project UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "environment_name": { "type": "string", "description": "The environment name. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "The environment UUID. You need to provide at least one of environment_name or environment_uuid." }, "docker_compose_raw": { "type": "string", "description": "The Docker Compose raw content." }, "destination_uuid": { "type": "string", "description": "The destination UUID if the server has more than one destinations." }, "name": { "type": "string", "description": "The application name." }, "description": { "type": "string", "description": "The application description." }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the application should be deployed instantly." }, "use_build_server": { "type": "boolean", "nullable": true, "description": "Use build server." }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "force_domain_override": { "type": "boolean", "description": "Force domain usage even if conflicts are detected. Default is false." } }, "type": "object" } } } }, "responses": { "201": { "description": "Application created successfully.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "409": { "description": "Domain conflicts detected.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Domain conflicts detected. Use force_domain_override=true to proceed." }, "warning": { "type": "string", "example": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior." }, "conflicts": { "type": "array", "items": { "properties": { "domain": { "type": "string", "example": "example.com" }, "resource_name": { "type": "string", "example": "My Application" }, "resource_uuid": { "type": "string", "nullable": true, "example": "abc123-def456" }, "resource_type": { "type": "string", "enum": [ "application", "service", "instance" ], "example": "application" }, "message": { "type": "string", "example": "Domain example.com is already in use by application 'My Application'" } }, "type": "object" } } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}": { "get": { "tags": [ "Applications" ], "summary": "Get", "description": "Get application by UUID.", "operationId": "get-application-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Get application by UUID.", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Application" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "delete": { "tags": [ "Applications" ], "summary": "Delete", "description": "Delete application by UUID.", "operationId": "delete-application-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "delete_configurations", "in": "query", "description": "Delete configurations.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "delete_volumes", "in": "query", "description": "Delete volumes.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "docker_cleanup", "in": "query", "description": "Run docker cleanup.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "delete_connected_networks", "in": "query", "description": "Delete connected networks.", "required": false, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Application deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Application deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Applications" ], "summary": "Update", "description": "Update application by UUID.", "operationId": "update-application-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Application updated.", "required": true, "content": { "application\/json": { "schema": { "properties": { "project_uuid": { "type": "string", "description": "The project UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "environment_name": { "type": "string", "description": "The environment name." }, "github_app_uuid": { "type": "string", "description": "The Github App UUID." }, "git_repository": { "type": "string", "description": "The git repository URL." }, "git_branch": { "type": "string", "description": "The git branch." }, "ports_exposes": { "type": "string", "description": "The ports to expose." }, "destination_uuid": { "type": "string", "description": "The destination UUID." }, "build_pack": { "type": "string", "enum": [ "nixpacks", "static", "dockerfile", "dockercompose" ], "description": "The build pack type." }, "name": { "type": "string", "description": "The application name." }, "description": { "type": "string", "description": "The application description." }, "domains": { "type": "string", "description": "The application domains." }, "git_commit_sha": { "type": "string", "description": "The git commit SHA." }, "docker_registry_image_name": { "type": "string", "description": "The docker registry image name." }, "docker_registry_image_tag": { "type": "string", "description": "The docker registry image tag." }, "is_static": { "type": "boolean", "description": "The flag to indicate if the application is static." }, "install_command": { "type": "string", "description": "The install command." }, "build_command": { "type": "string", "description": "The build command." }, "start_command": { "type": "string", "description": "The start command." }, "ports_mappings": { "type": "string", "description": "The ports mappings." }, "base_directory": { "type": "string", "description": "The base directory for all commands." }, "publish_directory": { "type": "string", "description": "The publish directory." }, "health_check_enabled": { "type": "boolean", "description": "Health check enabled." }, "health_check_path": { "type": "string", "description": "Health check path." }, "health_check_port": { "type": "string", "nullable": true, "description": "Health check port." }, "health_check_host": { "type": "string", "nullable": true, "description": "Health check host." }, "health_check_method": { "type": "string", "description": "Health check method." }, "health_check_return_code": { "type": "integer", "description": "Health check return code." }, "health_check_scheme": { "type": "string", "description": "Health check scheme." }, "health_check_response_text": { "type": "string", "nullable": true, "description": "Health check response text." }, "health_check_interval": { "type": "integer", "description": "Health check interval in seconds." }, "health_check_timeout": { "type": "integer", "description": "Health check timeout in seconds." }, "health_check_retries": { "type": "integer", "description": "Health check retries count." }, "health_check_start_period": { "type": "integer", "description": "Health check start period in seconds." }, "limits_memory": { "type": "string", "description": "Memory limit." }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit." }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness." }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation." }, "limits_cpus": { "type": "string", "description": "CPU limit." }, "limits_cpuset": { "type": "string", "nullable": true, "description": "CPU set." }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares." }, "custom_labels": { "type": "string", "description": "Custom labels." }, "custom_docker_run_options": { "type": "string", "description": "Custom docker run options." }, "post_deployment_command": { "type": "string", "description": "Post deployment command." }, "post_deployment_command_container": { "type": "string", "description": "Post deployment command container." }, "pre_deployment_command": { "type": "string", "description": "Pre deployment command." }, "pre_deployment_command_container": { "type": "string", "description": "Pre deployment command container." }, "manual_webhook_secret_github": { "type": "string", "description": "Manual webhook secret for Github." }, "manual_webhook_secret_gitlab": { "type": "string", "description": "Manual webhook secret for Gitlab." }, "manual_webhook_secret_bitbucket": { "type": "string", "description": "Manual webhook secret for Bitbucket." }, "manual_webhook_secret_gitea": { "type": "string", "description": "Manual webhook secret for Gitea." }, "redirect": { "type": "string", "nullable": true, "description": "How to set redirect with Traefik \/ Caddy. www<->non-www.", "enum": [ "www", "non-www", "both" ] }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the application should be deployed instantly." }, "dockerfile": { "type": "string", "description": "The Dockerfile content." }, "docker_compose_location": { "type": "string", "description": "The Docker Compose location." }, "docker_compose_raw": { "type": "string", "description": "The Docker Compose raw content." }, "docker_compose_custom_start_command": { "type": "string", "description": "The Docker Compose custom start command." }, "docker_compose_custom_build_command": { "type": "string", "description": "The Docker Compose custom build command." }, "docker_compose_domains": { "type": "array", "description": "The Docker Compose domains." }, "watch_paths": { "type": "string", "description": "The watch paths." }, "use_build_server": { "type": "boolean", "nullable": true, "description": "Use build server." }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "force_domain_override": { "type": "boolean", "description": "Force domain usage even if conflicts are detected. Default is false." } }, "type": "object" } } } }, "responses": { "200": { "description": "Application updated.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" }, "409": { "description": "Domain conflicts detected.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Domain conflicts detected. Use force_domain_override=true to proceed." }, "warning": { "type": "string", "example": "Using the same domain for multiple resources can cause routing conflicts and unpredictable behavior." }, "conflicts": { "type": "array", "items": { "properties": { "domain": { "type": "string", "example": "example.com" }, "resource_name": { "type": "string", "example": "My Application" }, "resource_uuid": { "type": "string", "nullable": true, "example": "abc123-def456" }, "resource_type": { "type": "string", "enum": [ "application", "service", "instance" ], "example": "application" }, "message": { "type": "string", "example": "Domain example.com is already in use by application 'My Application'" } }, "type": "object" } } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}\/logs": { "get": { "tags": [ "Applications" ], "summary": "Get application logs.", "description": "Get application logs by UUID.", "operationId": "get-application-logs-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "lines", "in": "query", "description": "Number of lines to show from the end of the logs.", "required": false, "schema": { "type": "integer", "format": "int32", "default": 100 } } ], "responses": { "200": { "description": "Get application logs by UUID.", "content": { "application\/json": { "schema": { "properties": { "logs": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}\/envs": { "get": { "tags": [ "Applications" ], "summary": "List Envs", "description": "List all envs by application UUID.", "operationId": "list-envs-by-application-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "All environment variables by application UUID.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/EnvironmentVariable" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "post": { "tags": [ "Applications" ], "summary": "Create Env", "description": "Create env by application UUID.", "operationId": "create-env-by-application-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Env created.", "required": true, "content": { "application\/json": { "schema": { "properties": { "key": { "type": "string", "description": "The key of the environment variable." }, "value": { "type": "string", "description": "The value of the environment variable." }, "is_preview": { "type": "boolean", "description": "The flag to indicate if the environment variable is used in preview deployments." }, "is_literal": { "type": "boolean", "description": "The flag to indicate if the environment variable is a literal, nothing espaced." }, "is_multiline": { "type": "boolean", "description": "The flag to indicate if the environment variable is multiline." }, "is_shown_once": { "type": "boolean", "description": "The flag to indicate if the environment variable's value is shown on the UI." } }, "type": "object" } } } }, "responses": { "201": { "description": "Environment variable created.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "example": "nc0k04gk8g0cgsk440g0koko" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Applications" ], "summary": "Update Env", "description": "Update env by application UUID.", "operationId": "update-env-by-application-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Env updated.", "required": true, "content": { "application\/json": { "schema": { "required": [ "key", "value" ], "properties": { "key": { "type": "string", "description": "The key of the environment variable." }, "value": { "type": "string", "description": "The value of the environment variable." }, "is_preview": { "type": "boolean", "description": "The flag to indicate if the environment variable is used in preview deployments." }, "is_literal": { "type": "boolean", "description": "The flag to indicate if the environment variable is a literal, nothing espaced." }, "is_multiline": { "type": "boolean", "description": "The flag to indicate if the environment variable is multiline." }, "is_shown_once": { "type": "boolean", "description": "The flag to indicate if the environment variable's value is shown on the UI." } }, "type": "object" } } } }, "responses": { "201": { "description": "Environment variable updated.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Environment variable updated." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}\/envs\/bulk": { "patch": { "tags": [ "Applications" ], "summary": "Update Envs (Bulk)", "description": "Update multiple envs by application UUID.", "operationId": "update-envs-by-application-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Bulk envs updated.", "required": true, "content": { "application\/json": { "schema": { "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "properties": { "key": { "type": "string", "description": "The key of the environment variable." }, "value": { "type": "string", "description": "The value of the environment variable." }, "is_preview": { "type": "boolean", "description": "The flag to indicate if the environment variable is used in preview deployments." }, "is_literal": { "type": "boolean", "description": "The flag to indicate if the environment variable is a literal, nothing espaced." }, "is_multiline": { "type": "boolean", "description": "The flag to indicate if the environment variable is multiline." }, "is_shown_once": { "type": "boolean", "description": "The flag to indicate if the environment variable's value is shown on the UI." } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "201": { "description": "Environment variables updated.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Environment variables updated." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}\/envs\/{env_uuid}": { "delete": { "tags": [ "Applications" ], "summary": "Delete Env", "description": "Delete env by UUID.", "operationId": "delete-env-by-application-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "env_uuid", "in": "path", "description": "UUID of the environment variable.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Environment variable deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Environment variable deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}\/start": { "get": { "tags": [ "Applications" ], "summary": "Start", "description": "Start application. `Post` request is also accepted.", "operationId": "start-application-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "force", "in": "query", "description": "Force rebuild.", "schema": { "type": "boolean", "default": false } }, { "name": "instant_deploy", "in": "query", "description": "Instant deploy (skip queuing).", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "Start application.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Deployment request queued.", "description": "Message." }, "deployment_uuid": { "type": "string", "example": "doogksw", "description": "UUID of the deployment." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}\/stop": { "get": { "tags": [ "Applications" ], "summary": "Stop", "description": "Stop application. `Post` request is also accepted.", "operationId": "stop-application-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Stop application.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Application stopping request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/applications\/{uuid}\/restart": { "get": { "tags": [ "Applications" ], "summary": "Restart", "description": "Restart application. `Post` request is also accepted.", "operationId": "restart-application-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Restart application.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Restart request queued." }, "deployment_uuid": { "type": "string", "example": "doogksw", "description": "UUID of the deployment." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases": { "get": { "tags": [ "Databases" ], "summary": "List", "description": "List all databases.", "operationId": "list-databases", "responses": { "200": { "description": "Get all databases", "content": { "application\/json": { "schema": { "type": "string" }, "example": "Content is very complex. Will be implemented later." } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/{uuid}": { "get": { "tags": [ "Databases" ], "summary": "Get", "description": "Get database by UUID.", "operationId": "get-database-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the database.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Get all databases", "content": { "application\/json": { "schema": { "type": "string" }, "example": "Content is very complex. Will be implemented later." } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "delete": { "tags": [ "Databases" ], "summary": "Delete", "description": "Delete database by UUID.", "operationId": "delete-database-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the database.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "delete_configurations", "in": "query", "description": "Delete configurations.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "delete_volumes", "in": "query", "description": "Delete volumes.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "docker_cleanup", "in": "query", "description": "Run docker cleanup.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "delete_connected_networks", "in": "query", "description": "Delete connected networks.", "required": false, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Database deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Database deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Databases" ], "summary": "Update", "description": "Update database by UUID.", "operationId": "update-database-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the database.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "properties": { "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "postgres_user": { "type": "string", "description": "PostgreSQL user" }, "postgres_password": { "type": "string", "description": "PostgreSQL password" }, "postgres_db": { "type": "string", "description": "PostgreSQL database" }, "postgres_initdb_args": { "type": "string", "description": "PostgreSQL initdb args" }, "postgres_host_auth_method": { "type": "string", "description": "PostgreSQL host auth method" }, "postgres_conf": { "type": "string", "description": "PostgreSQL conf" }, "clickhouse_admin_user": { "type": "string", "description": "Clickhouse admin user" }, "clickhouse_admin_password": { "type": "string", "description": "Clickhouse admin password" }, "dragonfly_password": { "type": "string", "description": "DragonFly password" }, "redis_password": { "type": "string", "description": "Redis password" }, "redis_conf": { "type": "string", "description": "Redis conf" }, "keydb_password": { "type": "string", "description": "KeyDB password" }, "keydb_conf": { "type": "string", "description": "KeyDB conf" }, "mariadb_conf": { "type": "string", "description": "MariaDB conf" }, "mariadb_root_password": { "type": "string", "description": "MariaDB root password" }, "mariadb_user": { "type": "string", "description": "MariaDB user" }, "mariadb_password": { "type": "string", "description": "MariaDB password" }, "mariadb_database": { "type": "string", "description": "MariaDB database" }, "mongo_conf": { "type": "string", "description": "Mongo conf" }, "mongo_initdb_root_username": { "type": "string", "description": "Mongo initdb root username" }, "mongo_initdb_root_password": { "type": "string", "description": "Mongo initdb root password" }, "mongo_initdb_database": { "type": "string", "description": "Mongo initdb init database" }, "mysql_root_password": { "type": "string", "description": "MySQL root password" }, "mysql_password": { "type": "string", "description": "MySQL password" }, "mysql_user": { "type": "string", "description": "MySQL user" }, "mysql_database": { "type": "string", "description": "MySQL database" }, "mysql_conf": { "type": "string", "description": "MySQL conf" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/postgresql": { "post": { "tags": [ "Databases" ], "summary": "Create (PostgreSQL)", "description": "Create a new PostgreSQL database.", "operationId": "create-database-postgresql", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "postgres_user": { "type": "string", "description": "PostgreSQL user" }, "postgres_password": { "type": "string", "description": "PostgreSQL password" }, "postgres_db": { "type": "string", "description": "PostgreSQL database" }, "postgres_initdb_args": { "type": "string", "description": "PostgreSQL initdb args" }, "postgres_host_auth_method": { "type": "string", "description": "PostgreSQL host auth method" }, "postgres_conf": { "type": "string", "description": "PostgreSQL conf" }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/clickhouse": { "post": { "tags": [ "Databases" ], "summary": "Create (Clickhouse)", "description": "Create a new Clickhouse database.", "operationId": "create-database-clickhouse", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "clickhouse_admin_user": { "type": "string", "description": "Clickhouse admin user" }, "clickhouse_admin_password": { "type": "string", "description": "Clickhouse admin password" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/dragonfly": { "post": { "tags": [ "Databases" ], "summary": "Create (DragonFly)", "description": "Create a new DragonFly database.", "operationId": "create-database-dragonfly", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "dragonfly_password": { "type": "string", "description": "DragonFly password" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/redis": { "post": { "tags": [ "Databases" ], "summary": "Create (Redis)", "description": "Create a new Redis database.", "operationId": "create-database-redis", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "redis_password": { "type": "string", "description": "Redis password" }, "redis_conf": { "type": "string", "description": "Redis conf" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/keydb": { "post": { "tags": [ "Databases" ], "summary": "Create (KeyDB)", "description": "Create a new KeyDB database.", "operationId": "create-database-keydb", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "keydb_password": { "type": "string", "description": "KeyDB password" }, "keydb_conf": { "type": "string", "description": "KeyDB conf" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/mariadb": { "post": { "tags": [ "Databases" ], "summary": "Create (MariaDB)", "description": "Create a new MariaDB database.", "operationId": "create-database-mariadb", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "mariadb_conf": { "type": "string", "description": "MariaDB conf" }, "mariadb_root_password": { "type": "string", "description": "MariaDB root password" }, "mariadb_user": { "type": "string", "description": "MariaDB user" }, "mariadb_password": { "type": "string", "description": "MariaDB password" }, "mariadb_database": { "type": "string", "description": "MariaDB database" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/mysql": { "post": { "tags": [ "Databases" ], "summary": "Create (MySQL)", "description": "Create a new MySQL database.", "operationId": "create-database-mysql", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "mysql_root_password": { "type": "string", "description": "MySQL root password" }, "mysql_password": { "type": "string", "description": "MySQL password" }, "mysql_user": { "type": "string", "description": "MySQL user" }, "mysql_database": { "type": "string", "description": "MySQL database" }, "mysql_conf": { "type": "string", "description": "MySQL conf" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/mongodb": { "post": { "tags": [ "Databases" ], "summary": "Create (MongoDB)", "description": "Create a new MongoDB database.", "operationId": "create-database-mongodb", "requestBody": { "description": "Database data", "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "server_uuid": { "type": "string", "description": "UUID of the server" }, "project_uuid": { "type": "string", "description": "UUID of the project" }, "environment_name": { "type": "string", "description": "Name of the environment. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "UUID of the environment. You need to provide at least one of environment_name or environment_uuid." }, "destination_uuid": { "type": "string", "description": "UUID of the destination if the server has multiple destinations" }, "mongo_conf": { "type": "string", "description": "MongoDB conf" }, "mongo_initdb_root_username": { "type": "string", "description": "MongoDB initdb root username" }, "name": { "type": "string", "description": "Name of the database" }, "description": { "type": "string", "description": "Description of the database" }, "image": { "type": "string", "description": "Docker Image of the database" }, "is_public": { "type": "boolean", "description": "Is the database public?" }, "public_port": { "type": "integer", "description": "Public port of the database" }, "limits_memory": { "type": "string", "description": "Memory limit of the database" }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit of the database" }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness of the database" }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation of the database" }, "limits_cpus": { "type": "string", "description": "CPU limit of the database" }, "limits_cpuset": { "type": "string", "description": "CPU set of the database" }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares of the database" }, "instant_deploy": { "type": "boolean", "description": "Instant deploy the database" } }, "type": "object" } } } }, "responses": { "200": { "description": "Database updated" }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/{uuid}\/start": { "get": { "tags": [ "Databases" ], "summary": "Start", "description": "Start database. `Post` request is also accepted.", "operationId": "start-database-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the database.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Start database.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Database starting request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/{uuid}\/stop": { "get": { "tags": [ "Databases" ], "summary": "Stop", "description": "Stop database. `Post` request is also accepted.", "operationId": "stop-database-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the database.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Stop database.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Database stopping request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/databases\/{uuid}\/restart": { "get": { "tags": [ "Databases" ], "summary": "Restart", "description": "Restart database. `Post` request is also accepted.", "operationId": "restart-database-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the database.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Restart database.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Database restaring request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/deployments": { "get": { "tags": [ "Deployments" ], "summary": "List", "description": "List currently running deployments", "operationId": "list-deployments", "responses": { "200": { "description": "Get all currently running deployments.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/ApplicationDeploymentQueue" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/deployments\/{uuid}": { "get": { "tags": [ "Deployments" ], "summary": "Get", "description": "Get deployment by UUID.", "operationId": "get-deployment-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Deployment UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Get deployment by UUID.", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/ApplicationDeploymentQueue" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/deploy": { "get": { "tags": [ "Deployments" ], "summary": "Deploy", "description": "Deploy by tag or uuid. `Post` request also accepted with `uuid` and `tag` json body.", "operationId": "deploy-by-tag-or-uuid", "parameters": [ { "name": "tag", "in": "query", "description": "Tag name(s). Comma separated list is also accepted.", "schema": { "type": "string" } }, { "name": "uuid", "in": "query", "description": "Resource UUID(s). Comma separated list is also accepted.", "schema": { "type": "string" } }, { "name": "force", "in": "query", "description": "Force rebuild (without cache)", "schema": { "type": "boolean" } }, { "name": "pr", "in": "query", "description": "Pull Request Id for deploying specific PR builds. Cannot be used with tag parameter.", "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Get deployment(s) UUID's", "content": { "application\/json": { "schema": { "properties": { "deployments": { "type": "array", "items": { "properties": { "message": { "type": "string" }, "resource_uuid": { "type": "string" }, "deployment_uuid": { "type": "string" } }, "type": "object" } } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/deployments\/applications\/{uuid}": { "get": { "tags": [ "Deployments" ], "summary": "List application deployments", "description": "List application deployments by using the app uuid", "operationId": "list-deployments-by-app-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "skip", "in": "query", "description": "Number of records to skip.", "required": false, "schema": { "type": "integer", "default": 0, "minimum": 0 } }, { "name": "take", "in": "query", "description": "Number of records to take.", "required": false, "schema": { "type": "integer", "default": 10, "minimum": 1 } } ], "responses": { "200": { "description": "List application deployments by using the app uuid.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/Application" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/version": { "get": { "summary": "Version", "description": "Get Coolify version.", "operationId": "version", "responses": { "200": { "description": "Returns the version of the application", "content": { "application\/json": { "schema": { "type": "string" }, "example": "v4.0.0" } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/enable": { "get": { "summary": "Enable API", "description": "Enable API (only with root permissions).", "operationId": "enable-api", "responses": { "200": { "description": "Enable API.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "API enabled." } }, "type": "object" } } } }, "403": { "description": "You are not allowed to enable the API.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "You are not allowed to enable the API." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/disable": { "get": { "summary": "Disable API", "description": "Disable API (only with root permissions).", "operationId": "disable-api", "responses": { "200": { "description": "Disable API.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "API disabled." } }, "type": "object" } } } }, "403": { "description": "You are not allowed to disable the API.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "You are not allowed to disable the API." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/health": { "get": { "summary": "Healthcheck", "description": "Healthcheck endpoint.", "operationId": "healthcheck", "responses": { "200": { "description": "Healthcheck endpoint.", "content": { "application\/json": { "schema": { "type": "string" }, "example": "OK" } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } } } }, "\/projects": { "get": { "tags": [ "Projects" ], "summary": "List", "description": "List projects.", "operationId": "list-projects", "responses": { "200": { "description": "Get all projects.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/Project" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] }, "post": { "tags": [ "Projects" ], "summary": "Create", "description": "Create Project.", "operationId": "create-project", "requestBody": { "description": "Project created.", "required": true, "content": { "application\/json": { "schema": { "properties": { "name": { "type": "string", "description": "The name of the project." }, "description": { "type": "string", "description": "The description of the project." } }, "type": "object" } } } }, "responses": { "201": { "description": "Project created.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "example": "og888os", "description": "The UUID of the project." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/projects\/{uuid}": { "get": { "tags": [ "Projects" ], "summary": "Get", "description": "Get project by UUID.", "operationId": "get-project-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Project UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Project details", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Project" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "description": "Project not found." } }, "security": [ { "bearerAuth": [] } ] }, "delete": { "tags": [ "Projects" ], "summary": "Delete", "description": "Delete project by UUID.", "operationId": "delete-project-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the application.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Project deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Project deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Projects" ], "summary": "Update", "description": "Update Project.", "operationId": "update-project-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the project.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Project updated.", "required": true, "content": { "application\/json": { "schema": { "properties": { "name": { "type": "string", "description": "The name of the project." }, "description": { "type": "string", "description": "The description of the project." } }, "type": "object" } } } }, "responses": { "201": { "description": "Project updated.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "example": "og888os" }, "name": { "type": "string", "example": "Project Name" }, "description": { "type": "string", "example": "Project Description" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/projects\/{uuid}\/{environment_name_or_uuid}": { "get": { "tags": [ "Projects" ], "summary": "Environment", "description": "Get environment by name or UUID.", "operationId": "get-environment-by-name-or-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Project UUID", "required": true, "schema": { "type": "string" } }, { "name": "environment_name_or_uuid", "in": "path", "description": "Environment name or UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Environment details", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Environment" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/projects\/{uuid}\/environments": { "get": { "tags": [ "Projects" ], "summary": "List Environments", "description": "List all environments in a project.", "operationId": "get-environments", "parameters": [ { "name": "uuid", "in": "path", "description": "Project UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "List of environments", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/Environment" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "description": "Project not found." } }, "security": [ { "bearerAuth": [] } ] }, "post": { "tags": [ "Projects" ], "summary": "Create Environment", "description": "Create environment in project.", "operationId": "create-environment", "parameters": [ { "name": "uuid", "in": "path", "description": "Project UUID", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Environment created.", "required": true, "content": { "application\/json": { "schema": { "properties": { "name": { "type": "string", "description": "The name of the environment." } }, "type": "object" } } } }, "responses": { "201": { "description": "Environment created.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "example": "env123", "description": "The UUID of the environment." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "description": "Project not found." }, "409": { "description": "Environment with this name already exists." } }, "security": [ { "bearerAuth": [] } ] } }, "\/projects\/{uuid}\/environments\/{environment_name_or_uuid}": { "delete": { "tags": [ "Projects" ], "summary": "Delete Environment", "description": "Delete environment by name or UUID. Environment must be empty.", "operationId": "delete-environment", "parameters": [ { "name": "uuid", "in": "path", "description": "Project UUID", "required": true, "schema": { "type": "string" } }, { "name": "environment_name_or_uuid", "in": "path", "description": "Environment name or UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Environment deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Environment deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "description": "Environment has resources, so it cannot be deleted." }, "404": { "description": "Project or environment not found." } }, "security": [ { "bearerAuth": [] } ] } }, "\/resources": { "get": { "tags": [ "Resources" ], "summary": "List", "description": "Get all resources.", "operationId": "list-resources", "responses": { "200": { "description": "Get all resources", "content": { "application\/json": { "schema": { "type": "string" }, "example": "Content is very complex. Will be implemented later." } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/security\/keys": { "get": { "tags": [ "Private Keys" ], "summary": "List", "description": "List all private keys.", "operationId": "list-private-keys", "responses": { "200": { "description": "Get all private keys.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/PrivateKey" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] }, "post": { "tags": [ "Private Keys" ], "summary": "Create", "description": "Create a new private key.", "operationId": "create-private-key", "requestBody": { "required": true, "content": { "application\/json": { "schema": { "required": [ "private_key" ], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "private_key": { "type": "string" } }, "type": "object", "additionalProperties": false } } } }, "responses": { "201": { "description": "The created private key's UUID.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Private Keys" ], "summary": "Update", "description": "Update a private key.", "operationId": "update-private-key", "requestBody": { "required": true, "content": { "application\/json": { "schema": { "required": [ "private_key" ], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "private_key": { "type": "string" } }, "type": "object", "additionalProperties": false } } } }, "responses": { "201": { "description": "The updated private key's UUID.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/security\/keys\/{uuid}": { "get": { "tags": [ "Private Keys" ], "summary": "Get", "description": "Get key by UUID.", "operationId": "get-private-key-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Private Key UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Get all private keys.", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/PrivateKey" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "description": "Private Key not found." } }, "security": [ { "bearerAuth": [] } ] }, "delete": { "tags": [ "Private Keys" ], "summary": "Delete", "description": "Delete a private key.", "operationId": "delete-private-key-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Private Key UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Private Key deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Private Key deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "description": "Private Key not found." }, "422": { "description": "Private Key is in use and cannot be deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Private Key is in use and cannot be deleted." } }, "type": "object" } } } } }, "security": [ { "bearerAuth": [] } ] } }, "\/servers": { "get": { "tags": [ "Servers" ], "summary": "List", "description": "List all servers.", "operationId": "list-servers", "responses": { "200": { "description": "Get all servers.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/Server" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] }, "post": { "tags": [ "Servers" ], "summary": "Create", "description": "Create Server.", "operationId": "create-server", "requestBody": { "description": "Server created.", "required": true, "content": { "application\/json": { "schema": { "properties": { "name": { "type": "string", "example": "My Server", "description": "The name of the server." }, "description": { "type": "string", "example": "My Server Description", "description": "The description of the server." }, "ip": { "type": "string", "example": "127.0.0.1", "description": "The IP of the server." }, "port": { "type": "integer", "example": 22, "description": "The port of the server." }, "user": { "type": "string", "example": "root", "description": "The user of the server." }, "private_key_uuid": { "type": "string", "example": "og888os", "description": "The UUID of the private key." }, "is_build_server": { "type": "boolean", "example": false, "description": "Is build server." }, "instant_validate": { "type": "boolean", "example": false, "description": "Instant validate." }, "proxy_type": { "type": "string", "enum": [ "traefik", "caddy", "none" ], "example": "traefik", "description": "The proxy type." } }, "type": "object" } } } }, "responses": { "201": { "description": "Server created.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "example": "og888os", "description": "The UUID of the server." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/servers\/{uuid}": { "get": { "tags": [ "Servers" ], "summary": "Get", "description": "Get server by UUID.", "operationId": "get-server-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Server's UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Get server by UUID", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Server" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "delete": { "tags": [ "Servers" ], "summary": "Delete", "description": "Delete server by UUID.", "operationId": "delete-server-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the server.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Server deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Server deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Servers" ], "summary": "Update", "description": "Update Server.", "operationId": "update-server-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Server UUID", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Server updated.", "required": true, "content": { "application\/json": { "schema": { "properties": { "name": { "type": "string", "description": "The name of the server." }, "description": { "type": "string", "description": "The description of the server." }, "ip": { "type": "string", "description": "The IP of the server." }, "port": { "type": "integer", "description": "The port of the server." }, "user": { "type": "string", "description": "The user of the server." }, "private_key_uuid": { "type": "string", "description": "The UUID of the private key." }, "is_build_server": { "type": "boolean", "description": "Is build server." }, "instant_validate": { "type": "boolean", "description": "Instant validate." }, "proxy_type": { "type": "string", "enum": [ "traefik", "caddy", "none" ], "description": "The proxy type." } }, "type": "object" } } } }, "responses": { "201": { "description": "Server updated.", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Server" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/servers\/{uuid}\/resources": { "get": { "tags": [ "Servers" ], "summary": "Resources", "description": "Get resources by server.", "operationId": "get-resources-by-server-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Server's UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Get resources by server", "content": { "application\/json": { "schema": { "type": "array", "items": { "properties": { "id": { "type": "integer" }, "uuid": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" }, "status": { "type": "string" } }, "type": "object" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/servers\/{uuid}\/domains": { "get": { "tags": [ "Servers" ], "summary": "Domains", "description": "Get domains by server.", "operationId": "get-domains-by-server-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Server's UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Get domains by server", "content": { "application\/json": { "schema": { "type": "array", "items": { "properties": { "ip": { "type": "string" }, "domains": { "type": "array", "items": { "type": "string" } } }, "type": "object" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/servers\/{uuid}\/validate": { "get": { "tags": [ "Servers" ], "summary": "Validate", "description": "Validate server by UUID.", "operationId": "validate-server-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Server UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "description": "Server validation started.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Validation started." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services": { "get": { "tags": [ "Services" ], "summary": "List", "description": "List all services.", "operationId": "list-services", "responses": { "200": { "description": "Get all services", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/Service" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] }, "post": { "tags": [ "Services" ], "summary": "Create service", "description": "Create a one-click \/ custom service", "operationId": "create-service", "requestBody": { "required": true, "content": { "application\/json": { "schema": { "required": [ "server_uuid", "project_uuid", "environment_name", "environment_uuid" ], "properties": { "type": { "description": "The one-click service type", "type": "string", "enum": [ "activepieces", "appsmith", "appwrite", "authentik", "babybuddy", "budge", "changedetection", "chatwoot", "classicpress-with-mariadb", "classicpress-with-mysql", "classicpress-without-database", "cloudflared", "code-server", "dashboard", "directus", "directus-with-postgresql", "docker-registry", "docuseal", "docuseal-with-postgres", "dokuwiki", "duplicati", "emby", "embystat", "fider", "filebrowser", "firefly", "formbricks", "ghost", "gitea", "gitea-with-mariadb", "gitea-with-mysql", "gitea-with-postgresql", "glance", "glances", "glitchtip", "grafana", "grafana-with-postgresql", "grocy", "heimdall", "homepage", "jellyfin", "kuzzle", "listmonk", "logto", "mediawiki", "meilisearch", "metabase", "metube", "minio", "moodle", "n8n", "n8n-with-postgresql", "next-image-transformation", "nextcloud", "nocodb", "odoo", "openblocks", "pairdrop", "penpot", "phpmyadmin", "pocketbase", "posthog", "reactive-resume", "rocketchat", "shlink", "slash", "snapdrop", "statusnook", "stirling-pdf", "supabase", "syncthing", "tolgee", "trigger", "trigger-with-external-database", "twenty", "umami", "unleash-with-postgresql", "unleash-without-database", "uptime-kuma", "vaultwarden", "vikunja", "weblate", "whoogle", "wordpress-with-mariadb", "wordpress-with-mysql", "wordpress-without-database" ] }, "name": { "type": "string", "maxLength": 255, "description": "Name of the service." }, "description": { "type": "string", "nullable": true, "description": "Description of the service." }, "project_uuid": { "type": "string", "description": "Project UUID." }, "environment_name": { "type": "string", "description": "Environment name. You need to provide at least one of environment_name or environment_uuid." }, "environment_uuid": { "type": "string", "description": "Environment UUID. You need to provide at least one of environment_name or environment_uuid." }, "server_uuid": { "type": "string", "description": "Server UUID." }, "destination_uuid": { "type": "string", "description": "Destination UUID. Required if server has multiple destinations." }, "instant_deploy": { "type": "boolean", "default": false, "description": "Start the service immediately after creation." }, "docker_compose_raw": { "type": "string", "description": "The Docker Compose raw content." } }, "type": "object" } } } }, "responses": { "201": { "description": "Service created successfully.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "description": "Service UUID." }, "domains": { "type": "array", "items": { "type": "string" }, "description": "Service domains." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services\/{uuid}": { "get": { "tags": [ "Services" ], "summary": "Get", "description": "Get service by UUID.", "operationId": "get-service-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Service UUID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Get a service by UUID.", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Service" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "delete": { "tags": [ "Services" ], "summary": "Delete", "description": "Delete service by UUID.", "operationId": "delete-service-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "Service UUID", "required": true, "schema": { "type": "string" } }, { "name": "delete_configurations", "in": "query", "description": "Delete configurations.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "delete_volumes", "in": "query", "description": "Delete volumes.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "docker_cleanup", "in": "query", "description": "Run docker cleanup.", "required": false, "schema": { "type": "boolean", "default": true } }, { "name": "delete_connected_networks", "in": "query", "description": "Delete connected networks.", "required": false, "schema": { "type": "boolean", "default": true } } ], "responses": { "200": { "description": "Delete a service by UUID", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Service deletion request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Services" ], "summary": "Update", "description": "Update service by UUID.", "operationId": "update-service-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Service updated.", "required": true, "content": { "application\/json": { "schema": { "properties": { "name": { "type": "string", "description": "The service name." }, "description": { "type": "string", "description": "The service description." }, "project_uuid": { "type": "string", "description": "The project UUID." }, "environment_name": { "type": "string", "description": "The environment name." }, "environment_uuid": { "type": "string", "description": "The environment UUID." }, "server_uuid": { "type": "string", "description": "The server UUID." }, "destination_uuid": { "type": "string", "description": "The destination UUID." }, "instant_deploy": { "type": "boolean", "description": "The flag to indicate if the service should be deployed instantly." }, "connect_to_docker_network": { "type": "boolean", "default": false, "description": "Connect the service to the predefined docker network." }, "docker_compose_raw": { "type": "string", "description": "The Docker Compose raw content." } }, "type": "object" } } } }, "responses": { "200": { "description": "Service updated.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "description": "Service UUID." }, "domains": { "type": "array", "items": { "type": "string" }, "description": "Service domains." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services\/{uuid}\/envs": { "get": { "tags": [ "Services" ], "summary": "List Envs", "description": "List all envs by service UUID.", "operationId": "list-envs-by-service-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "All environment variables by service UUID.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/EnvironmentVariable" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "post": { "tags": [ "Services" ], "summary": "Create Env", "description": "Create env by service UUID.", "operationId": "create-env-by-service-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Env created.", "required": true, "content": { "application\/json": { "schema": { "properties": { "key": { "type": "string", "description": "The key of the environment variable." }, "value": { "type": "string", "description": "The value of the environment variable." }, "is_preview": { "type": "boolean", "description": "The flag to indicate if the environment variable is used in preview deployments." }, "is_literal": { "type": "boolean", "description": "The flag to indicate if the environment variable is a literal, nothing espaced." }, "is_multiline": { "type": "boolean", "description": "The flag to indicate if the environment variable is multiline." }, "is_shown_once": { "type": "boolean", "description": "The flag to indicate if the environment variable's value is shown on the UI." } }, "type": "object" } } } }, "responses": { "201": { "description": "Environment variable created.", "content": { "application\/json": { "schema": { "properties": { "uuid": { "type": "string", "example": "nc0k04gk8g0cgsk440g0koko" } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] }, "patch": { "tags": [ "Services" ], "summary": "Update Env", "description": "Update env by service UUID.", "operationId": "update-env-by-service-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Env updated.", "required": true, "content": { "application\/json": { "schema": { "required": [ "key", "value" ], "properties": { "key": { "type": "string", "description": "The key of the environment variable." }, "value": { "type": "string", "description": "The value of the environment variable." }, "is_preview": { "type": "boolean", "description": "The flag to indicate if the environment variable is used in preview deployments." }, "is_literal": { "type": "boolean", "description": "The flag to indicate if the environment variable is a literal, nothing espaced." }, "is_multiline": { "type": "boolean", "description": "The flag to indicate if the environment variable is multiline." }, "is_shown_once": { "type": "boolean", "description": "The flag to indicate if the environment variable's value is shown on the UI." } }, "type": "object" } } } }, "responses": { "201": { "description": "Environment variable updated.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Environment variable updated." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services\/{uuid}\/envs\/bulk": { "patch": { "tags": [ "Services" ], "summary": "Update Envs (Bulk)", "description": "Update multiple envs by service UUID.", "operationId": "update-envs-by-service-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "Bulk envs updated.", "required": true, "content": { "application\/json": { "schema": { "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "properties": { "key": { "type": "string", "description": "The key of the environment variable." }, "value": { "type": "string", "description": "The value of the environment variable." }, "is_preview": { "type": "boolean", "description": "The flag to indicate if the environment variable is used in preview deployments." }, "is_literal": { "type": "boolean", "description": "The flag to indicate if the environment variable is a literal, nothing espaced." }, "is_multiline": { "type": "boolean", "description": "The flag to indicate if the environment variable is multiline." }, "is_shown_once": { "type": "boolean", "description": "The flag to indicate if the environment variable's value is shown on the UI." } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "201": { "description": "Environment variables updated.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Environment variables updated." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services\/{uuid}\/envs\/{env_uuid}": { "delete": { "tags": [ "Services" ], "summary": "Delete Env", "description": "Delete env by UUID.", "operationId": "delete-env-by-service-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "env_uuid", "in": "path", "description": "UUID of the environment variable.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Environment variable deleted.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Environment variable deleted." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services\/{uuid}\/start": { "get": { "tags": [ "Services" ], "summary": "Start", "description": "Start service. `Post` request is also accepted.", "operationId": "start-service-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Start service.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Service starting request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services\/{uuid}\/stop": { "get": { "tags": [ "Services" ], "summary": "Stop", "description": "Stop service. `Post` request is also accepted.", "operationId": "stop-service-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Stop service.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Service stopping request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/services\/{uuid}\/restart": { "get": { "tags": [ "Services" ], "summary": "Restart", "description": "Restart service. `Post` request is also accepted.", "operationId": "restart-service-by-uuid", "parameters": [ { "name": "uuid", "in": "path", "description": "UUID of the service.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "latest", "in": "query", "description": "Pull latest images.", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "Restart service.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Service restaring request queued." } }, "type": "object" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/teams": { "get": { "tags": [ "Teams" ], "summary": "List", "description": "Get all teams.", "operationId": "list-teams", "responses": { "200": { "description": "List of teams.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/Team" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/teams\/{id}": { "get": { "tags": [ "Teams" ], "summary": "Get", "description": "Get team by TeamId.", "operationId": "get-team-by-id", "parameters": [ { "name": "id", "in": "path", "description": "Team ID", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "List of teams.", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Team" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/teams\/{id}\/members": { "get": { "tags": [ "Teams" ], "summary": "Members", "description": "Get members by TeamId.", "operationId": "get-members-by-team-id", "parameters": [ { "name": "id", "in": "path", "description": "Team ID", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "List of members.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/User" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" }, "404": { "$ref": "#\/components\/responses\/404" } }, "security": [ { "bearerAuth": [] } ] } }, "\/teams\/current": { "get": { "tags": [ "Teams" ], "summary": "Authenticated Team", "description": "Get currently authenticated team.", "operationId": "get-current-team", "responses": { "200": { "description": "Current Team.", "content": { "application\/json": { "schema": { "$ref": "#\/components\/schemas\/Team" } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } }, "\/teams\/current\/members": { "get": { "tags": [ "Teams" ], "summary": "Authenticated Team Members", "description": "Get currently authenticated team members.", "operationId": "get-current-team-members", "responses": { "200": { "description": "Currently authenticated team members.", "content": { "application\/json": { "schema": { "type": "array", "items": { "$ref": "#\/components\/schemas\/User" } } } } }, "401": { "$ref": "#\/components\/responses\/401" }, "400": { "$ref": "#\/components\/responses\/400" } }, "security": [ { "bearerAuth": [] } ] } } }, "components": { "schemas": { "Application": { "description": "Application model", "properties": { "id": { "type": "integer", "description": "The application identifier in the database." }, "description": { "type": "string", "nullable": true, "description": "The application description." }, "repository_project_id": { "type": "integer", "nullable": true, "description": "The repository project identifier." }, "uuid": { "type": "string", "description": "The application UUID." }, "name": { "type": "string", "description": "The application name." }, "fqdn": { "type": "string", "nullable": true, "description": "The application domains." }, "config_hash": { "type": "string", "description": "Configuration hash." }, "git_repository": { "type": "string", "description": "Git repository URL." }, "git_branch": { "type": "string", "description": "Git branch." }, "git_commit_sha": { "type": "string", "description": "Git commit SHA." }, "git_full_url": { "type": "string", "nullable": true, "description": "Git full URL." }, "docker_registry_image_name": { "type": "string", "nullable": true, "description": "Docker registry image name." }, "docker_registry_image_tag": { "type": "string", "nullable": true, "description": "Docker registry image tag." }, "build_pack": { "type": "string", "description": "Build pack.", "enum": [ "nixpacks", "static", "dockerfile", "dockercompose" ] }, "static_image": { "type": "string", "description": "Static image used when static site is deployed." }, "install_command": { "type": "string", "description": "Install command." }, "build_command": { "type": "string", "description": "Build command." }, "start_command": { "type": "string", "description": "Start command." }, "ports_exposes": { "type": "string", "description": "Ports exposes." }, "ports_mappings": { "type": "string", "nullable": true, "description": "Ports mappings." }, "custom_network_aliases": { "type": "string", "nullable": true, "description": "Network aliases for Docker container." }, "base_directory": { "type": "string", "description": "Base directory for all commands." }, "publish_directory": { "type": "string", "description": "Publish directory." }, "health_check_enabled": { "type": "boolean", "description": "Health check enabled." }, "health_check_path": { "type": "string", "description": "Health check path." }, "health_check_port": { "type": "string", "nullable": true, "description": "Health check port." }, "health_check_host": { "type": "string", "nullable": true, "description": "Health check host." }, "health_check_method": { "type": "string", "description": "Health check method." }, "health_check_return_code": { "type": "integer", "description": "Health check return code." }, "health_check_scheme": { "type": "string", "description": "Health check scheme." }, "health_check_response_text": { "type": "string", "nullable": true, "description": "Health check response text." }, "health_check_interval": { "type": "integer", "description": "Health check interval in seconds." }, "health_check_timeout": { "type": "integer", "description": "Health check timeout in seconds." }, "health_check_retries": { "type": "integer", "description": "Health check retries count." }, "health_check_start_period": { "type": "integer", "description": "Health check start period in seconds." }, "limits_memory": { "type": "string", "description": "Memory limit." }, "limits_memory_swap": { "type": "string", "description": "Memory swap limit." }, "limits_memory_swappiness": { "type": "integer", "description": "Memory swappiness." }, "limits_memory_reservation": { "type": "string", "description": "Memory reservation." }, "limits_cpus": { "type": "string", "description": "CPU limit." }, "limits_cpuset": { "type": "string", "nullable": true, "description": "CPU set." }, "limits_cpu_shares": { "type": "integer", "description": "CPU shares." }, "status": { "type": "string", "description": "Application status." }, "preview_url_template": { "type": "string", "description": "Preview URL template." }, "destination_type": { "type": "string", "description": "Destination type." }, "destination_id": { "type": "integer", "description": "Destination identifier." }, "source_id": { "type": "integer", "nullable": true, "description": "Source identifier." }, "private_key_id": { "type": "integer", "nullable": true, "description": "Private key identifier." }, "environment_id": { "type": "integer", "description": "Environment identifier." }, "dockerfile": { "type": "string", "nullable": true, "description": "Dockerfile content. Used for dockerfile build pack." }, "dockerfile_location": { "type": "string", "description": "Dockerfile location." }, "custom_labels": { "type": "string", "nullable": true, "description": "Custom labels." }, "dockerfile_target_build": { "type": "string", "nullable": true, "description": "Dockerfile target build." }, "manual_webhook_secret_github": { "type": "string", "nullable": true, "description": "Manual webhook secret for GitHub." }, "manual_webhook_secret_gitlab": { "type": "string", "nullable": true, "description": "Manual webhook secret for GitLab." }, "manual_webhook_secret_bitbucket": { "type": "string", "nullable": true, "description": "Manual webhook secret for Bitbucket." }, "manual_webhook_secret_gitea": { "type": "string", "nullable": true, "description": "Manual webhook secret for Gitea." }, "docker_compose_location": { "type": "string", "description": "Docker compose location." }, "docker_compose": { "type": "string", "nullable": true, "description": "Docker compose content. Used for docker compose build pack." }, "docker_compose_raw": { "type": "string", "nullable": true, "description": "Docker compose raw content." }, "docker_compose_domains": { "type": "string", "nullable": true, "description": "Docker compose domains." }, "docker_compose_custom_start_command": { "type": "string", "nullable": true, "description": "Docker compose custom start command." }, "docker_compose_custom_build_command": { "type": "string", "nullable": true, "description": "Docker compose custom build command." }, "swarm_replicas": { "type": "integer", "nullable": true, "description": "Swarm replicas. Only used for swarm deployments." }, "swarm_placement_constraints": { "type": "string", "nullable": true, "description": "Swarm placement constraints. Only used for swarm deployments." }, "custom_docker_run_options": { "type": "string", "nullable": true, "description": "Custom docker run options." }, "post_deployment_command": { "type": "string", "nullable": true, "description": "Post deployment command." }, "post_deployment_command_container": { "type": "string", "nullable": true, "description": "Post deployment command container." }, "pre_deployment_command": { "type": "string", "nullable": true, "description": "Pre deployment command." }, "pre_deployment_command_container": { "type": "string", "nullable": true, "description": "Pre deployment command container." }, "watch_paths": { "type": "string", "nullable": true, "description": "Watch paths." }, "custom_healthcheck_found": { "type": "boolean", "description": "Custom healthcheck found." }, "redirect": { "type": "string", "nullable": true, "description": "How to set redirect with Traefik \/ Caddy. www<->non-www.", "enum": [ "www", "non-www", "both" ] }, "created_at": { "type": "string", "format": "date-time", "description": "The date and time when the application was created." }, "updated_at": { "type": "string", "format": "date-time", "description": "The date and time when the application was last updated." }, "deleted_at": { "type": "string", "format": "date-time", "nullable": true, "description": "The date and time when the application was deleted." }, "compose_parsing_version": { "type": "string", "description": "How Coolify parse the compose file." }, "custom_nginx_configuration": { "type": "string", "nullable": true, "description": "Custom Nginx configuration base64 encoded." }, "is_http_basic_auth_enabled": { "type": "boolean", "description": "HTTP Basic Authentication enabled." }, "http_basic_auth_username": { "type": "string", "nullable": true, "description": "Username for HTTP Basic Authentication" }, "http_basic_auth_password": { "type": "string", "nullable": true, "description": "Password for HTTP Basic Authentication" } }, "type": "object" }, "ApplicationDeploymentQueue": { "description": "Project model", "properties": { "id": { "type": "integer" }, "application_id": { "type": "string" }, "deployment_uuid": { "type": "string" }, "pull_request_id": { "type": "integer" }, "force_rebuild": { "type": "boolean" }, "commit": { "type": "string" }, "status": { "type": "string" }, "is_webhook": { "type": "boolean" }, "is_api": { "type": "boolean" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" }, "logs": { "type": "string" }, "current_process_id": { "type": "string" }, "restart_only": { "type": "boolean" }, "git_type": { "type": "string" }, "server_id": { "type": "integer" }, "application_name": { "type": "string" }, "server_name": { "type": "string" }, "deployment_url": { "type": "string" }, "destination_id": { "type": "string" }, "only_this_server": { "type": "boolean" }, "rollback": { "type": "boolean" }, "commit_message": { "type": "string" } }, "type": "object" }, "Environment": { "description": "Environment model", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "project_id": { "type": "integer" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" }, "description": { "type": "string" } }, "type": "object" }, "EnvironmentVariable": { "description": "Environment Variable model", "properties": { "id": { "type": "integer" }, "uuid": { "type": "string" }, "resourceable_type": { "type": "string" }, "resourceable_id": { "type": "integer" }, "is_literal": { "type": "boolean" }, "is_multiline": { "type": "boolean" }, "is_preview": { "type": "boolean" }, "is_runtime": { "type": "boolean" }, "is_buildtime": { "type": "boolean" }, "is_shared": { "type": "boolean" }, "is_shown_once": { "type": "boolean" }, "key": { "type": "string" }, "value": { "type": "string" }, "real_value": { "type": "string" }, "version": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "type": "object" }, "PrivateKey": { "description": "Private Key model", "properties": { "id": { "type": "integer" }, "uuid": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "private_key": { "type": "string", "format": "private-key" }, "public_key": { "type": "string", "description": "The public key of the private key." }, "fingerprint": { "type": "string", "description": "The fingerprint of the private key." }, "is_git_related": { "type": "boolean" }, "team_id": { "type": "integer" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "type": "object" }, "Project": { "description": "Project model", "properties": { "id": { "type": "integer" }, "uuid": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "environments": { "description": "The environments of the project.", "type": "array", "items": { "$ref": "#\/components\/schemas\/Environment" } } }, "type": "object" }, "Server": { "description": "Server model", "properties": { "id": { "type": "integer", "description": "The server ID." }, "uuid": { "type": "string", "description": "The server UUID." }, "name": { "type": "string", "description": "The server name." }, "description": { "type": "string", "description": "The server description." }, "ip": { "type": "string", "description": "The IP address." }, "user": { "type": "string", "description": "The user." }, "port": { "type": "integer", "description": "The port number." }, "proxy": { "type": "object", "description": "The proxy configuration." }, "proxy_type": { "type": "string", "enum": [ "traefik", "caddy", "none" ], "description": "The proxy type." }, "high_disk_usage_notification_sent": { "type": "boolean", "description": "The flag to indicate if the high disk usage notification has been sent." }, "unreachable_notification_sent": { "type": "boolean", "description": "The flag to indicate if the unreachable notification has been sent." }, "unreachable_count": { "type": "integer", "description": "The unreachable count for your server." }, "validation_logs": { "type": "string", "description": "The validation logs." }, "log_drain_notification_sent": { "type": "boolean", "description": "The flag to indicate if the log drain notification has been sent." }, "swarm_cluster": { "type": "string", "description": "The swarm cluster configuration." }, "settings": { "$ref": "#\/components\/schemas\/ServerSetting" } }, "type": "object" }, "ServerSetting": { "description": "Server Settings model", "properties": { "id": { "type": "integer" }, "concurrent_builds": { "type": "integer" }, "dynamic_timeout": { "type": "integer" }, "force_disabled": { "type": "boolean" }, "force_server_cleanup": { "type": "boolean" }, "is_build_server": { "type": "boolean" }, "is_cloudflare_tunnel": { "type": "boolean" }, "is_jump_server": { "type": "boolean" }, "is_logdrain_axiom_enabled": { "type": "boolean" }, "is_logdrain_custom_enabled": { "type": "boolean" }, "is_logdrain_highlight_enabled": { "type": "boolean" }, "is_logdrain_newrelic_enabled": { "type": "boolean" }, "is_metrics_enabled": { "type": "boolean" }, "is_reachable": { "type": "boolean" }, "is_sentinel_enabled": { "type": "boolean" }, "is_swarm_manager": { "type": "boolean" }, "is_swarm_worker": { "type": "boolean" }, "is_terminal_enabled": { "type": "boolean" }, "is_usable": { "type": "boolean" }, "logdrain_axiom_api_key": { "type": "string" }, "logdrain_axiom_dataset_name": { "type": "string" }, "logdrain_custom_config": { "type": "string" }, "logdrain_custom_config_parser": { "type": "string" }, "logdrain_highlight_project_id": { "type": "string" }, "logdrain_newrelic_base_uri": { "type": "string" }, "logdrain_newrelic_license_key": { "type": "string" }, "sentinel_metrics_history_days": { "type": "integer" }, "sentinel_metrics_refresh_rate_seconds": { "type": "integer" }, "sentinel_token": { "type": "string" }, "docker_cleanup_frequency": { "type": "string" }, "docker_cleanup_threshold": { "type": "integer" }, "server_id": { "type": "integer" }, "wildcard_domain": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" }, "delete_unused_volumes": { "type": "boolean", "description": "The flag to indicate if the unused volumes should be deleted." }, "delete_unused_networks": { "type": "boolean", "description": "The flag to indicate if the unused networks should be deleted." } }, "type": "object" }, "Service": { "description": "Service model", "properties": { "id": { "type": "integer", "description": "The unique identifier of the service. Only used for database identification." }, "uuid": { "type": "string", "description": "The unique identifier of the service." }, "name": { "type": "string", "description": "The name of the service." }, "environment_id": { "type": "integer", "description": "The unique identifier of the environment where the service is attached to." }, "server_id": { "type": "integer", "description": "The unique identifier of the server where the service is running." }, "description": { "type": "string", "description": "The description of the service." }, "docker_compose_raw": { "type": "string", "description": "The raw docker-compose.yml file of the service." }, "docker_compose": { "type": "string", "description": "The docker-compose.yml file that is parsed and modified by Coolify." }, "destination_type": { "type": "string", "description": "Destination type." }, "destination_id": { "type": "integer", "description": "The unique identifier of the destination where the service is running." }, "connect_to_docker_network": { "type": "boolean", "description": "The flag to connect the service to the predefined Docker network." }, "is_container_label_escape_enabled": { "type": "boolean", "description": "The flag to enable the container label escape." }, "is_container_label_readonly_enabled": { "type": "boolean", "description": "The flag to enable the container label readonly." }, "config_hash": { "type": "string", "description": "The hash of the service configuration." }, "service_type": { "type": "string", "description": "The type of the service." }, "created_at": { "type": "string", "description": "The date and time when the service was created." }, "updated_at": { "type": "string", "description": "The date and time when the service was last updated." }, "deleted_at": { "type": "string", "description": "The date and time when the service was deleted." } }, "type": "object" }, "Team": { "description": "Team model", "properties": { "id": { "type": "integer", "description": "The unique identifier of the team." }, "name": { "type": "string", "description": "The name of the team." }, "description": { "type": "string", "description": "The description of the team." }, "personal_team": { "type": "boolean", "description": "Whether the team is personal or not." }, "created_at": { "type": "string", "description": "The date and time the team was created." }, "updated_at": { "type": "string", "description": "The date and time the team was last updated." }, "show_boarding": { "type": "boolean", "description": "Whether to show the boarding screen or not." }, "custom_server_limit": { "type": "string", "description": "The custom server limit." }, "members": { "description": "The members of the team.", "type": "array", "items": { "$ref": "#\/components\/schemas\/User" } } }, "type": "object" }, "User": { "description": "User model", "properties": { "id": { "type": "integer", "description": "The user identifier in the database." }, "name": { "type": "string", "description": "The user name." }, "email": { "type": "string", "description": "The user email." }, "email_verified_at": { "type": "string", "description": "The date when the user email was verified." }, "created_at": { "type": "string", "description": "The date when the user was created." }, "updated_at": { "type": "string", "description": "The date when the user was updated." }, "two_factor_confirmed_at": { "type": "string", "description": "The date when the user two factor was confirmed." }, "force_password_reset": { "type": "boolean", "description": "The flag to force the user to reset the password." }, "marketing_emails": { "type": "boolean", "description": "The flag to receive marketing emails." } }, "type": "object" } }, "responses": { "400": { "description": "Invalid token.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Invalid token." } }, "type": "object" } } } }, "401": { "description": "Unauthenticated.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Unauthenticated." } }, "type": "object" } } } }, "404": { "description": "Resource not found.", "content": { "application\/json": { "schema": { "properties": { "message": { "type": "string", "example": "Resource not found." } }, "type": "object" } } } } }, "securitySchemes": { "bearerAuth": { "type": "http", "description": "Go to `Keys & Tokens` \/ `API tokens` and create a new token. Use the token as the bearer token.", "scheme": "bearer" } } }, "tags": [ { "name": "Applications", "description": "Applications" }, { "name": "Databases", "description": "Databases" }, { "name": "Deployments", "description": "Deployments" }, { "name": "Projects", "description": "Projects" }, { "name": "Resources", "description": "Resources" }, { "name": "Private Keys", "description": "Private Keys" }, { "name": "Servers", "description": "Servers" }, { "name": "Services", "description": "Services" }, { "name": "Teams", "description": "Teams" } ] }