From 33b965d9dbeb3b3c16725263ba74a5cd8c927a42 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Tue, 9 Jul 2024 13:59:54 +0200 Subject: [PATCH] chore: more details --- .../Controllers/Api/DatabasesController.php | 396 +++++------ app/Http/Controllers/Api/DeployController.php | 12 +- .../Controllers/Api/ServicesController.php | 26 +- app/Http/Controllers/Api/TeamController.php | 4 +- app/Models/Application.php | 151 ++-- app/Models/Service.php | 33 +- app/Models/User.php | 18 +- openapi.yaml | 660 +++++++++++++----- 8 files changed, 808 insertions(+), 492 deletions(-) diff --git a/app/Http/Controllers/Api/DatabasesController.php b/app/Http/Controllers/Api/DatabasesController.php index 2ff21344c..d928c7f84 100644 --- a/app/Http/Controllers/Api/DatabasesController.php +++ b/app/Http/Controllers/Api/DatabasesController.php @@ -174,44 +174,44 @@ public function database_by_uuid(Request $request) schema: new OA\Schema( type: 'object', properties: [ - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'postgres_user' => ['type' => 'string'], - 'postgres_password' => ['type' => 'string'], - 'postgres_db' => ['type' => 'string'], - 'postgres_initdb_args' => ['type' => 'string'], - 'postgres_host_auth_method' => ['type' => 'string'], - 'postgres_conf' => ['type' => 'string'], - 'clickhouse_admin_user' => ['type' => 'string'], - 'clickhouse_admin_password' => ['type' => 'string'], - 'dragonfly_password' => ['type' => 'string'], - 'redis_password' => ['type' => 'string'], - 'redis_conf' => ['type' => 'string'], - 'keydb_password' => ['type' => 'string'], - 'keydb_conf' => ['type' => 'string'], - 'mariadb_conf' => ['type' => 'string'], - 'mariadb_root_password' => ['type' => 'string'], - 'mariadb_user' => ['type' => 'string'], - 'mariadb_password' => ['type' => 'string'], - 'mariadb_database' => ['type' => 'string'], - 'mongo_conf' => ['type' => 'string'], - 'mongo_initdb_root_username' => ['type' => 'string'], - 'mongo_initdb_root_password' => ['type' => 'string'], - 'mongo_initdb_init_database' => ['type' => 'string'], - 'mysql_root_password' => ['type' => 'string'], - 'mysql_user' => ['type' => 'string'], - 'mysql_database' => ['type' => 'string'], - 'mysql_conf' => ['type' => 'string'], + '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'], ], ), ) @@ -478,29 +478,29 @@ public function update_by_uuid(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'postgres_user' => ['type' => 'string'], - 'postgres_password' => ['type' => 'string'], - 'postgres_db' => ['type' => 'string'], - 'postgres_initdb_args' => ['type' => 'string'], - 'postgres_host_auth_method' => ['type' => 'string'], - 'postgres_conf' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) @@ -543,25 +543,25 @@ public function create_database_postgresql(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'clickhouse_admin_user' => ['type' => 'string'], - 'clickhouse_admin_password' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) @@ -604,24 +604,24 @@ public function create_database_clickhouse(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'dragonfly_password' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) @@ -664,25 +664,25 @@ public function create_database_dragonfly(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'redis_password' => ['type' => 'string'], - 'redis_conf' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) @@ -725,25 +725,25 @@ public function create_database_redis(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'keydb_password' => ['type' => 'string'], - 'keydb_conf' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) @@ -786,28 +786,28 @@ public function create_database_keydb(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'mariadb_conf' => ['type' => 'string'], - 'mariadb_root_password' => ['type' => 'string'], - 'mariadb_user' => ['type' => 'string'], - 'mariadb_password' => ['type' => 'string'], - 'mariadb_database' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) @@ -850,27 +850,27 @@ public function create_database_mariadb(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'mysql_root_password' => ['type' => 'string'], - 'mysql_user' => ['type' => 'string'], - 'mysql_database' => ['type' => 'string'], - 'mysql_conf' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) @@ -913,25 +913,25 @@ public function create_database_mysql(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name'], properties: [ - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'mongo_conf' => ['type' => 'string'], - 'mongo_initdb_root_username' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'image' => ['type' => 'string'], - 'is_public' => ['type' => 'boolean'], - 'public_port' => ['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'], - 'limits_cpu_shares' => ['type' => 'integer'], - 'instant_deploy' => ['type' => 'boolean'], + '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'], ], ), ) diff --git a/app/Http/Controllers/Api/DeployController.php b/app/Http/Controllers/Api/DeployController.php index ec46a5296..2ee56d0cd 100644 --- a/app/Http/Controllers/Api/DeployController.php +++ b/app/Http/Controllers/Api/DeployController.php @@ -189,7 +189,7 @@ public function deploy(Request $request) $force = $request->query->get('force') ?? false; if ($uuids && $tags) { - return response()->json(['message' => 'You can only use uuid or tag, not both.', 'docs' => 'https://coolify.io/docs/api-reference/deploy-webhook'], 400); + return response()->json(['message' => 'You can only use uuid or tag, not both.'], 400); } if (is_null($teamId)) { return invalidTokenResponse(); @@ -200,7 +200,7 @@ public function deploy(Request $request) return $this->by_uuids($uuids, $teamId, $force); } - return response()->json(['message' => 'You must provide uuid or tag.', 'docs' => 'https://coolify.io/docs/api-reference/deploy-webhook'], 400); + return response()->json(['message' => 'You must provide uuid or tag.'], 400); } private function by_uuids(string $uuid, int $teamId, bool $force = false) @@ -209,7 +209,7 @@ private function by_uuids(string $uuid, int $teamId, bool $force = false) $uuids = collect(array_filter($uuids)); if (count($uuids) === 0) { - return response()->json(['message' => 'No UUIDs provided.', 'docs' => 'https://coolify.io/docs/api-reference/deploy-webhook'], 400); + return response()->json(['message' => 'No UUIDs provided.'], 400); } $deployments = collect(); $payload = collect(); @@ -230,7 +230,7 @@ private function by_uuids(string $uuid, int $teamId, bool $force = false) return response()->json(serializeApiResponse($payload->toArray())); } - return response()->json(['message' => 'No resources found.', 'docs' => 'https://coolify.io/docs/api-reference/deploy-webhook'], 404); + return response()->json(['message' => 'No resources found.'], 404); } public function by_tags(string $tags, int $team_id, bool $force = false) @@ -239,7 +239,7 @@ public function by_tags(string $tags, int $team_id, bool $force = false) $tags = collect(array_filter($tags)); if (count($tags) === 0) { - return response()->json(['message' => 'No TAGs provided.', 'docs' => 'https://coolify.io/docs/api-reference/deploy-webhook'], 400); + return response()->json(['message' => 'No TAGs provided.'], 400); } $message = collect([]); $deployments = collect(); @@ -278,7 +278,7 @@ public function by_tags(string $tags, int $team_id, bool $force = false) return response()->json(serializeApiResponse($payload->toArray())); } - return response()->json(['message' => 'No resources found with this tag.', 'docs' => 'https://coolify.io/docs/api-reference/deploy-webhook'], 404); + return response()->json(['message' => 'No resources found with this tag.'], 404); } public function deploy_resource($resource, bool $force = false): array diff --git a/app/Http/Controllers/Api/ServicesController.php b/app/Http/Controllers/Api/ServicesController.php index ca230b154..7d58987d8 100644 --- a/app/Http/Controllers/Api/ServicesController.php +++ b/app/Http/Controllers/Api/ServicesController.php @@ -100,7 +100,9 @@ public function services(Request $request) type: 'object', required: ['server_uuid', 'project_uuid', 'environment_name', 'type'], properties: [ - 'type' => ['type' => 'string', + 'type' => [ + 'description' => 'The one-click service type', + 'type' => 'string', 'enum' => [ 'activepieces', 'appsmith', @@ -190,17 +192,13 @@ public function services(Request $request) 'wordpress-without-database', ], ], - 'server_uuid' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'description' => ['type' => 'string'], - 'project_uuid' => ['type' => 'string'], - 'environment_name' => ['type' => 'string'], - 'server_uuid' => ['type' => 'string'], - 'destination_uuid' => ['type' => 'string'], - 'instant_deploy' => ['type' => 'boolean'], + '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.'], ], ), ), @@ -215,8 +213,8 @@ public function services(Request $request) schema: new OA\Schema( type: 'object', properties: [ - 'uuid' => ['type' => 'string'], - 'domains' => ['type' => 'array', 'items' => ['type' => 'string']], + 'uuid' => ['type' => 'string', 'description' => 'Service UUID.'], + 'domains' => ['type' => 'array', 'items' => ['type' => 'string'], 'description' => 'Service domains.'], ] ) ), diff --git a/app/Http/Controllers/Api/TeamController.php b/app/Http/Controllers/Api/TeamController.php index 2c32f01e7..1a481e5ec 100644 --- a/app/Http/Controllers/Api/TeamController.php +++ b/app/Http/Controllers/Api/TeamController.php @@ -116,7 +116,7 @@ public function team_by_id(Request $request) $teams = auth()->user()->teams; $team = $teams->where('id', $id)->first(); if (is_null($team)) { - return response()->json(['message' => 'Team not found.', 'docs' => 'https://coolify.io/docs/api-reference/get-team-by-teamid'], 404); + return response()->json(['message' => 'Team not found.'], 404); } $team = $this->removeSensitiveData($team); @@ -173,7 +173,7 @@ public function members_by_id(Request $request) $teams = auth()->user()->teams; $team = $teams->where('id', $id)->first(); if (is_null($team)) { - return response()->json(['message' => 'Team not found.', 'docs' => 'https://coolify.io/docs/api-reference/get-team-by-teamid-members'], 404); + return response()->json(['message' => 'Team not found.'], 404); } $members = $team->members; $members->makeHidden([ diff --git a/app/Models/Application.php b/app/Models/Application.php index dd04ee004..47487d1f8 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -19,82 +19,81 @@ description: 'Application model', type: 'object', 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'], + '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.'], ] )] diff --git a/app/Models/Service.php b/app/Models/Service.php index 92aca5141..2fc0778e6 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -13,23 +13,22 @@ description: 'Service model', type: 'object', properties: [ - 'id' => ['type' => 'integer'], - 'uuid' => ['type' => 'string'], - 'name' => ['type' => 'string'], - 'environment_id' => ['type' => 'integer'], - 'created_at' => ['type' => 'string'], - 'updated_at' => ['type' => 'string'], - 'server_id' => ['type' => 'integer'], - 'description' => ['type' => 'string'], - 'docker_compose_raw' => ['type' => 'string'], - 'docker_compose' => ['type' => 'string'], - 'destination_type' => ['type' => 'string'], - 'destination_id' => ['type' => 'integer'], - 'deleted_at' => ['type' => 'string'], - 'connect_to_docker_network' => ['type' => 'boolean'], - 'config_hash' => ['type' => 'string'], - 'service_type' => ['type' => 'string'], - 'is_container_label_escape_enabled' => ['type' => 'boolean'], + '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.'], + '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.'], ], )] class Service extends BaseModel diff --git a/app/Models/User.php b/app/Models/User.php index 33b70be3d..18d15c0e0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -23,15 +23,15 @@ description: 'User model', type: 'object', properties: [ - 'id' => ['type' => 'integer'], - 'name' => ['type' => 'string'], - 'email' => ['type' => 'string'], - 'email_verified_at' => ['type' => 'string'], - 'created_at' => ['type' => 'string'], - 'updated_at' => ['type' => 'string'], - 'two_factor_confirmed_at' => ['type' => 'string'], - 'force_password_reset' => ['type' => 'boolean'], - 'marketing_emails' => ['type' => 'boolean'], + '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.'], ], )] class User extends Authenticatable implements SendsEmail diff --git a/openapi.yaml b/openapi.yaml index 13d72596c..669b4a575 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1456,80 +1456,118 @@ paths: 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': @@ -1563,50 +1601,73 @@ paths: 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': @@ -1638,42 +1699,61 @@ paths: 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': @@ -1705,40 +1785,58 @@ paths: 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': @@ -1770,42 +1868,61 @@ paths: 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': @@ -1837,42 +1954,61 @@ paths: 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': @@ -1904,48 +2040,70 @@ paths: 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': @@ -1977,46 +2135,67 @@ paths: 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': @@ -2048,42 +2227,61 @@ paths: 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': @@ -2825,22 +3023,33 @@ paths: - 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] - server_uuid: - type: string - project_uuid: - type: string - environment_name: - type: string - destination_uuid: - type: string 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': @@ -2849,8 +3058,8 @@ paths: application/json: schema: properties: - uuid: { type: string } - domains: { type: array, items: { type: string } } + uuid: { type: string, description: 'Service UUID.' } + domains: { type: array, items: { type: string }, description: 'Service domains.' } type: object '401': $ref: '#/components/responses/401' @@ -3162,188 +3371,276 @@ components: 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: '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 - health_check_enabled: - type: boolean + 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 - 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 + description: 'The date and time when the application was deleted.' type: object ApplicationDeploymentQueue: description: 'Project model' @@ -3748,38 +4045,52 @@ components: 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 - created_at: - type: string - updated_at: - type: string + 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 - destination_type: - type: string + description: 'The docker-compose.yml file that is parsed and modified by Coolify.' destination_id: type: integer - deleted_at: - type: string + description: 'The unique identifier of the destination where the service is running.' connect_to_docker_network: type: boolean - config_hash: - type: string - service_type: - type: string + 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.' + 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' @@ -3933,22 +4244,31 @@ components: 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':