lasthourcloud/openapi.yaml
2024-07-23 11:48:38 +02:00

4857 lines
159 KiB
YAML

openapi: 3.0.0
info:
title: Coolify
version: '0.1'
servers:
-
url: 'https://app.coolify.io/api/v1'
paths:
/applications:
get:
tags:
- Applications
summary: List
description: 'List all applications.'
operationId: 02978e79fc0b54d573b2359f2a1f7d86
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: []
patch:
tags:
- Applications
summary: Update
description: 'Update application by UUID.'
operationId: ff28a22d25b1f658c40b54d2073abbca
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/public:
post:
tags:
- Applications
summary: 'Create (Public)'
description: 'Create new application based on a public git repository.'
operationId: cb56324ad19693469b4461d3f6065a5b
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-gh-app:
post:
tags:
- Applications
summary: 'Create (Private - GH App)'
description: 'Create new application based on a private repository through a Github App.'
operationId: 4d46c84bda4f1a411f6dda15fce4061f
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: e3eaa989ffb05366247a00cdfd551efa
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: 2b433ad6f5d259eb7f4f3b5af9913708
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: e9a2d6dd9404acf880dc3053f09477fc
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: 3731add8226c2d664455978cac46c242
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: 3630b62c28e7358e7f0087c1d8fe1845
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: 1e110b190a1045d34f3e1c61608a8702
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: []
'/applications/{uuid}/envs':
get:
tags:
- Applications
summary: 'List Envs'
description: 'List all envs by application UUID.'
operationId: 7c8e0c286870e23294a075cc0584df2f
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: 4699ffbb7d6e58581fd0b0a14f36ffc2
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: 3d70a2d569f395be220b3f09ad36674b
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: ae96f0f585ed158b2abd2d9ba40f3cf9
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: 96097c5cfc7dc0e7a3de229645f630c7
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: dc87c2061ab303757a0e061f87900c4c
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: 133ef3c7bd5043901f24bb5002a536eb
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: b231ae7baab9ef47f0627be820e735bc
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: ecd0ee1e46e4c854c18e6c9daa3d37f3
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: b49cb2d3e8f34c4e80cdffd8a201031d
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: 20610931b2bae8aba34eee68624ab673
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: 5ba459ed390a721711a1708760e9de3b
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: 8f7f491ddc46a9fa065b4424512231cd
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: a1189fa7f956f238f0e95c9150ff57f6
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: e73f7de1c8eee4219e5ec98c4b9b7efe
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: 4d352d13544ee2953fd48ad7b0651098
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: b908f3929c371c217d489638e0a21ff6
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: 6bea521ddcd738dcbb5f3783a7308acf
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: 0a1158cf759c4493cbb1e30024c60623
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: fdba3de84d02519bb37599fea34b115d
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: 4c6eb21e734d411e2b3388578761123d
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: cb6d983c2679aff841c7501ce612a372
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: 04c7a5e4752b4a00036addb433f3f218
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: a2c05736269191ad0d99cadfd4708986
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: ccf9856174c115a1430d952ccbd36aea
parameters:
-
name: uuid
in: path
description: 'Deployment Uuid'
required: true
schema:
type: integer
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: 700eb6e51f4c9e86d722f600c65ed1d4
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: 187b37139844731110757711ee71c215
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: 595019bae03d08277def667609779ff3
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: 50e2486a2d196a996b24a284a283bcdb
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: 64db893135e686704bb88c3c238022c1
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: 762788f00f2dabb981df9adbc948d3f6
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 Project'
description: 'Create Project.'
operationId: cf067eb7cf18216cda3239329a2eeadb
requestBody:
description: 'Project created.'
required: true
content:
application/json:
schema:
properties:
name:
type: string
description: 'The name of the project.'
description:
type: string
description: 'The description of the project.'
type: object
responses:
'201':
description: 'Project created.'
content:
application/json:
schema:
properties:
uuid: { type: string, example: og888os }
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}':
get:
tags:
- Projects
summary: Get
description: 'Get project by Uuid.'
operationId: 63bf8b6a68fbb757f09ab519331f6298
parameters:
-
name: uuid
in: path
description: 'Project UUID'
required: true
schema:
type: integer
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: f668a936f505b4401948c74b6a663029
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 Project'
description: 'Update Project.'
operationId: 2db343bd6fc14c658cb51a2b73b2f842
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: 7e44845dce5aa47ed7b0daf5595ad2e1
parameters:
-
name: uuid
in: path
description: 'Project UUID'
required: true
schema:
type: integer
-
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: c399903694eb1314596832e49f7c66d7
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: 8a5d8d3ccbbcef54ed0e913a27faea9d
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: eb4780acaa990c594cdbe8ffa80b4fb0
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: 371fd26b8949a070c26a264231fe233f
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: 2f743a85eb65d5ddb8cd5b362bb3d26a
parameters:
-
name: uuid
in: path
description: 'Private Key Uuid'
required: true
schema:
type: integer
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: 8faa0bb399142f0084dfc3e003c42cf6
parameters:
-
name: uuid
in: path
description: 'Private Key Uuid'
required: true
schema:
type: integer
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: 787448df856cefd2d9a313566be30d34
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: []
'/servers/{uuid}':
get:
tags:
- Servers
summary: Get
description: 'Get server by UUID.'
operationId: 5baf04bddb8302c7e07f5b4c41aad10c
parameters:
-
name: uuid
in: path
description: "Server's Uuid"
required: true
schema:
type: integer
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: []
'/servers/{uuid}/resources':
get:
tags:
- Servers
summary: Resources
description: 'Get resources by server.'
operationId: cef26c059941b44fbd8de3a7a58c10a5
parameters:
-
name: uuid
in: path
description: "Server's Uuid"
required: true
schema:
type: integer
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: 1ee227755be848d572f412272f53dd93
parameters:
-
name: uuid
in: path
description: "Server's Uuid"
required: true
schema:
type: integer
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: []
/services:
get:
tags:
- Services
summary: List
description: 'List all services.'
operationId: 5d014ac25d33391b8f4c2316060ba452
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: 3d6cbfb54d919b53ba3984a113e837d7
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: 895d39ee2cb3994285de57256c2d428d
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: 6e1a61e4fddaa9d95bb9fc66dfaf0442
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: d2ddd9c028d123fbdec830dc4b25b4cb
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: 87399d34758ce16830740c68626614db
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: 836645faa615b75052759dae78639469
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: f9c530b5b25df9601cb87d6a58646f0a
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: ac57ff546c002032cef44602c46a4e76
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: 7858f5a45d9ea55184c182852a7f0f6c
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: 6a4ec9fed1aad7b0b38356c47d7ac509
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: 97e636a5796dbe71afb0bbcf1eec6e41
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: 'Application model'
properties:
id:
type: integer
repository_project_id:
type: integer
nullable: true
uuid:
type: string
name:
type: string
fqdn:
type: string
config_hash:
type: string
git_repository:
type: string
git_branch:
type: string
git_commit_sha:
type: string
git_full_url:
type: string
nullable: true
docker_registry_image_name:
type: string
nullable: true
docker_registry_image_tag:
type: string
nullable: true
build_pack:
type: string
static_image:
type: string
install_command:
type: string
build_command:
type: string
start_command:
type: string
ports_exposes:
type: string
ports_mappings:
type: string
nullable: true
base_directory:
type: string
publish_directory:
type: string
health_check_path:
type: string
health_check_port:
type: string
nullable: true
health_check_host:
type: string
health_check_method:
type: string
health_check_return_code:
type: integer
health_check_scheme:
type: string
health_check_response_text:
type: string
nullable: true
health_check_interval:
type: integer
health_check_timeout:
type: integer
health_check_retries:
type: integer
health_check_start_period:
type: integer
limits_memory:
type: string
limits_memory_swap:
type: string
limits_memory_swappiness:
type: integer
limits_memory_reservation:
type: string
limits_cpus:
type: string
limits_cpuset:
type: string
nullable: true
limits_cpu_shares:
type: integer
status:
type: string
preview_url_template:
type: string
destination_type:
type: string
destination_id:
type: integer
source_type:
type: string
source_id:
type: integer
private_key_id:
type: integer
nullable: true
environment_id:
type: integer
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
description:
type: string
nullable: true
dockerfile:
type: string
nullable: true
health_check_enabled:
type: boolean
dockerfile_location:
type: string
custom_labels:
type: string
dockerfile_target_build:
type: string
nullable: true
manual_webhook_secret_github:
type: string
nullable: true
manual_webhook_secret_gitlab:
type: string
nullable: true
docker_compose_location:
type: string
docker_compose:
type: string
nullable: true
docker_compose_raw:
type: string
nullable: true
docker_compose_domains:
type: string
nullable: true
deleted_at:
type: string
format: date-time
nullable: true
docker_compose_custom_start_command:
type: string
nullable: true
docker_compose_custom_build_command:
type: string
nullable: true
swarm_replicas:
type: integer
swarm_placement_constraints:
type: string
nullable: true
manual_webhook_secret_bitbucket:
type: string
nullable: true
custom_docker_run_options:
type: string
nullable: true
post_deployment_command:
type: string
nullable: true
post_deployment_command_container:
type: string
nullable: true
pre_deployment_command:
type: string
nullable: true
pre_deployment_command_container:
type: string
nullable: true
watch_paths:
type: string
nullable: true
custom_healthcheck_found:
type: boolean
manual_webhook_secret_gitea:
type: string
nullable: true
redirect:
type: string
type: object
ServerSetting:
description: 'Server Settings model'
properties:
id:
type: integer
cleanup_after_percentage:
type: integer
concurrent_builds:
type: integer
dynamic_timeout:
type: integer
force_disabled:
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
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_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