openapi: 3.0.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 - 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.' 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.' 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.' type: object responses: '200': description: 'Application created successfully.' '401': $ref: '#/components/responses/401' '400': $ref: '#/components/responses/400' 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 - 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.' 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.' type: object responses: '200': description: 'Application created successfully.' '401': $ref: '#/components/responses/401' '400': $ref: '#/components/responses/400' 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 - 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.' 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.' 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.' type: object responses: '200': description: 'Application created successfully.' '401': $ref: '#/components/responses/401' '400': $ref: '#/components/responses/400' 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 - 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.' 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.' type: object responses: '200': description: 'Application created successfully.' '401': $ref: '#/components/responses/401' '400': $ref: '#/components/responses/400' 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 - 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.' 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.' type: object responses: '200': description: 'Application created successfully.' '401': $ref: '#/components/responses/401' '400': $ref: '#/components/responses/400' 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 - 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.' 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.' type: object responses: '200': description: 'Application created successfully.' '401': $ref: '#/components/responses/401' '400': $ref: '#/components/responses/400' 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: cleanup in: query description: 'Delete configurations and volumes.' 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 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.' 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' 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_build_time: type: boolean description: 'The flag to indicate if the environment variable is used in build time.' 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_build_time: type: boolean description: 'The flag to indicate if the environment variable is used in build time.' 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_build_time: { type: boolean, description: 'The flag to indicate if the environment variable is used in build time.' }, 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: cleanup in: query description: 'Delete configurations and volumes.' 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_init_database: type: string description: 'Mongo initdb init database' mysql_root_password: type: string description: 'MySQL root 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 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' 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 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' 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 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' 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 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' 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 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' 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 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' 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 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' 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_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 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' 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.' 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 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: [] /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: [] /healthcheck: 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: uuid: 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 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}': get: tags: - Projects summary: Environment description: 'Get environment by name.' operationId: get-environment-by-name parameters: - name: uuid in: path description: 'Project UUID' required: true schema: type: string - name: environment_name in: path description: 'Environment name' required: true schema: type: string responses: '200': description: 'Project 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: [] /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: type: array items: $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.' 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.' 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 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.' type: object responses: '201': description: 'Server updated.' content: application/json: schema: type: array items: $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 description: 'Create a one-click service' operationId: create-service requestBody: required: true content: application/json: schema: required: - server_uuid - project_uuid - environment_name - type 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.' 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.' type: object responses: '201': description: 'Create a service.' 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 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: [] '/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 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.' 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.' 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 application_id: type: integer service_id: type: integer database_id: type: integer is_build_time: type: boolean is_literal: type: boolean is_multiline: type: boolean is_preview: 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 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 environments: description: 'The environments of the project.' type: array items: $ref: '#/components/schemas/Environment' type: object Server: description: 'Server model' properties: id: type: integer uuid: type: string name: type: string description: type: string ip: type: string user: type: string port: type: integer proxy: type: object high_disk_usage_notification_sent: type: boolean unreachable_notification_sent: type: boolean unreachable_count: type: integer validation_logs: type: string log_drain_notification_sent: type: boolean swarm_cluster: type: string 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_server_api_enabled: type: boolean is_swarm_manager: type: boolean is_swarm_worker: 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 metrics_history_days: type: integer metrics_refresh_rate_seconds: type: integer metrics_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 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.' smtp_enabled: type: boolean description: 'Whether SMTP is enabled or not.' smtp_from_address: type: string description: 'The email address to send emails from.' smtp_from_name: type: string description: 'The name to send emails from.' smtp_recipients: type: string description: 'The email addresses to send emails to.' smtp_host: type: string description: 'The SMTP host.' smtp_port: type: string description: 'The SMTP port.' smtp_encryption: type: string description: 'The SMTP encryption.' smtp_username: type: string description: 'The SMTP username.' smtp_password: type: string description: 'The SMTP password.' smtp_timeout: type: string description: 'The SMTP timeout.' smtp_notifications_test: type: boolean description: 'Whether to send test notifications via SMTP.' smtp_notifications_deployments: type: boolean description: 'Whether to send deployment notifications via SMTP.' smtp_notifications_status_changes: type: boolean description: 'Whether to send status change notifications via SMTP.' smtp_notifications_scheduled_tasks: type: boolean description: 'Whether to send scheduled task notifications via SMTP.' smtp_notifications_database_backups: type: boolean description: 'Whether to send database backup notifications via SMTP.' discord_enabled: type: boolean description: 'Whether Discord is enabled or not.' discord_webhook_url: type: string description: 'The Discord webhook URL.' discord_notifications_test: type: boolean description: 'Whether to send test notifications via Discord.' discord_notifications_deployments: type: boolean description: 'Whether to send deployment notifications via Discord.' discord_notifications_status_changes: type: boolean description: 'Whether to send status change notifications via Discord.' discord_notifications_database_backups: type: boolean description: 'Whether to send database backup notifications via Discord.' discord_notifications_scheduled_tasks: type: boolean description: 'Whether to send scheduled task notifications via Discord.' show_boarding: type: boolean description: 'Whether to show the boarding screen or not.' resend_enabled: type: boolean description: 'Whether to enable resending or not.' resend_api_key: type: string description: 'The resending API key.' use_instance_email_settings: type: boolean description: 'Whether to use instance email settings or not.' telegram_enabled: type: boolean description: 'Whether Telegram is enabled or not.' telegram_token: type: string description: 'The Telegram token.' telegram_chat_id: type: string description: 'The Telegram chat ID.' telegram_notifications_test: type: boolean description: 'Whether to send test notifications via Telegram.' telegram_notifications_deployments: type: boolean description: 'Whether to send deployment notifications via Telegram.' telegram_notifications_status_changes: type: boolean description: 'Whether to send status change notifications via Telegram.' telegram_notifications_database_backups: type: boolean description: 'Whether to send database backup notifications via Telegram.' telegram_notifications_test_message_thread_id: type: string description: 'The Telegram test message thread ID.' telegram_notifications_deployments_message_thread_id: type: string description: 'The Telegram deployment message thread ID.' telegram_notifications_status_changes_message_thread_id: type: string description: 'The Telegram status change message thread ID.' telegram_notifications_database_backups_message_thread_id: type: string description: 'The Telegram database backup message thread ID.' custom_server_limit: type: string description: 'The custom server limit.' telegram_notifications_scheduled_tasks: type: boolean description: 'Whether to send scheduled task notifications via Telegram.' telegram_notifications_scheduled_tasks_thread_id: type: string description: 'The Telegram scheduled task message thread ID.' 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