From 43f0ea2949d20d763bfe0d28d0044af44070e7b5 Mon Sep 17 00:00:00 2001 From: vlad6tz <220620187+vlad6tz@users.noreply.github.com> Date: Wed, 5 Aug 2026 19:31:17 +0300 Subject: [PATCH 1/2] fix(env): modify application env buildtime payload --- internal/models/application.go | 4 +- internal/models/application_test.go | 68 +++++++++++++++++++++++++++++ internal/models/models_test.go | 5 ++- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/internal/models/application.go b/internal/models/application.go index d50166d..b6959fd 100644 --- a/internal/models/application.go +++ b/internal/models/application.go @@ -295,7 +295,7 @@ type EnvironmentVariable struct { type EnvironmentVariableCreateRequest struct { Key string `json:"key"` Value string `json:"value"` - IsBuildTime *bool `json:"is_build_time,omitempty"` + IsBuildTime *bool `json:"is_buildtime,omitempty"` IsPreview *bool `json:"is_preview,omitempty"` IsLiteral *bool `json:"is_literal,omitempty"` IsMultiline *bool `json:"is_multiline,omitempty"` @@ -307,7 +307,7 @@ type EnvironmentVariableCreateRequest struct { type EnvironmentVariableUpdateRequest struct { Key *string `json:"key,omitempty"` Value *string `json:"value,omitempty"` - IsBuildTime *bool `json:"is_build_time,omitempty"` + IsBuildTime *bool `json:"is_buildtime,omitempty"` IsPreview *bool `json:"is_preview,omitempty"` IsLiteral *bool `json:"is_literal,omitempty"` IsMultiline *bool `json:"is_multiline,omitempty"` diff --git a/internal/models/application_test.go b/internal/models/application_test.go index 50fb848..ade4611 100644 --- a/internal/models/application_test.go +++ b/internal/models/application_test.go @@ -122,3 +122,71 @@ func TestDockerComposeDomains_OmittedWhenUnset(t *testing.T) { require.NoError(t, err) assert.NotContains(t, string(data), "docker_compose_domains") } + +func TestEnvironmentVariableRequests_MarshalBuildtimeField(t *testing.T) { + buildTime := false + runtime := true + literal := true + key := "EXAMPLE_FLAG" + value := "disabled" + + tests := []struct { + name string + req any + }{ + { + name: "create request", + req: EnvironmentVariableCreateRequest{ + Key: key, + Value: value, + IsBuildTime: &buildTime, + IsRuntime: &runtime, + IsLiteral: &literal, + }, + }, + { + name: "update request", + req: EnvironmentVariableUpdateRequest{ + Key: &key, + Value: &value, + IsBuildTime: &buildTime, + IsRuntime: &runtime, + IsLiteral: &literal, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + data, err := json.Marshal(tt.req) + require.NoError(t, err) + + var body map[string]any + require.NoError(t, json.Unmarshal(data, &body)) + + // The application environment API expects is_buildtime as the + // build-time field name; is_build_time is rejected as unknown. + assert.Equal(t, false, body["is_buildtime"]) + assert.NotContains(t, body, "is_build_time") + + // Explicitly supplied boolean flags must be preserved. + assert.Equal(t, true, body["is_runtime"]) + assert.Equal(t, true, body["is_literal"]) + }) + } +} + +func TestEnvironmentVariableCreateRequest_OmitsUnsetBuildtimeField(t *testing.T) { + // An unset pointer means --build-time was not provided. The field should be + // omitted rather than sent as either spelling of the API field. + req := EnvironmentVariableCreateRequest{ + Key: "EXAMPLE_FLAG", + Value: "disabled", + } + + data, err := json.Marshal(req) + require.NoError(t, err) + + assert.NotContains(t, string(data), `"is_buildtime"`) + assert.NotContains(t, string(data), `"is_build_time"`) +} diff --git a/internal/models/models_test.go b/internal/models/models_test.go index 28c6f60..401753c 100644 --- a/internal/models/models_test.go +++ b/internal/models/models_test.go @@ -465,8 +465,9 @@ func TestEnvironmentVariableCreateRequest_Marshal(t *testing.T) { data, err := json.Marshal(request) require.NoError(t, err) - // Request models should still use is_build_time (with underscore) per API spec - assert.Contains(t, string(data), `"is_build_time":true`) + // Coolify uses is_buildtime for environment-variable requests. + assert.Contains(t, string(data), `"is_buildtime":true`) + assert.NotContains(t, string(data), `"is_build_time"`) var unmarshaled EnvironmentVariableCreateRequest err = json.Unmarshal(data, &unmarshaled) From 570ed0f3177247c6bba452f6a3985b0bc6649c78 Mon Sep 17 00:00:00 2001 From: vlad6tz <220620187+vlad6tz@users.noreply.github.com> Date: Wed, 5 Aug 2026 20:04:27 +0300 Subject: [PATCH 2/2] chore: regenerate cli docs --- llms-full.txt | 345 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 342 insertions(+), 3 deletions(-) diff --git a/llms-full.txt b/llms-full.txt index db9f621..e2a9e29 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -56,6 +56,7 @@ Aliases are derived from the CLI command tree: - `coolify app start` | `coolify app deploy` - `coolify app storage` | `coolify app storages` - `coolify app tag` | `coolify app tags` +- `coolify app task` | `coolify app tasks` | `coolify app scheduled-task` | `coolify app scheduled-tasks` - `coolify app` | `coolify apps` | `coolify application` | `coolify applications` - `coolify cloud-init` | `coolify cloudinit` | `coolify cloud-init-script` - `coolify cloud-token` | `coolify cloud-tokens` @@ -68,6 +69,7 @@ Aliases are derived from the CLI command tree: - `coolify gitlab` | `coolify gl` | `coolify gitlab-app` | `coolify gitlab-apps` - `coolify notification` | `coolify notifications` - `coolify private-key` | `coolify private-keys` | `coolify key` | `coolify keys` +- `coolify project environments` | `coolify project environment` | `coolify project env` - `coolify project` | `coolify projects` - `coolify resource` | `coolify resources` - `coolify s3 delete` | `coolify s3 remove` @@ -80,6 +82,7 @@ Aliases are derived from the CLI command tree: - `coolify service database` | `coolify service databases` | `coolify service db` | `coolify service dbs` - `coolify service storage` | `coolify service storages` - `coolify service tag` | `coolify service tags` +- `coolify service task` | `coolify service tasks` | `coolify service scheduled-task` | `coolify service scheduled-tasks` - `coolify service` | `coolify services` | `coolify svc` - `coolify shared-env environment` | `coolify shared-env env` - `coolify shared-env` | `coolify shared-envs` | `coolify sharedenv` @@ -1530,7 +1533,7 @@ Parameters: description: New environment variable value (required) required: true -Command: coolify app execute-task +Command: coolify app execute-task Description: Execute a scheduled task now Parameters: (None) @@ -1786,6 +1789,82 @@ Command: coolify app tag remove Description: Remove an application tag Parameters: (None) +Command: coolify app task create +Description: Create a scheduled task for an application +Parameters: + - name: --command + type: string + description: Command to run (required) + required: true + - name: --container + type: string + description: Container name to run the command in + required: false + - name: --enabled + type: boolean + description: Whether the task is enabled + required: false + default: true + - name: --frequency + type: string + description: Cron expression or frequency (required) + required: true + - name: --name + type: string + description: Task name (required) + required: true + - name: --timeout + type: integer + description: Timeout in seconds + required: false + default: 300 + +Command: coolify app task delete +Description: Delete an application scheduled task +Parameters: (None) + +Command: coolify app task execute +Description: Execute an application scheduled task now +Parameters: (None) + +Command: coolify app task executions +Description: List executions for an application scheduled task +Parameters: (None) + +Command: coolify app task list +Description: List scheduled tasks for an application +Parameters: (None) + +Command: coolify app task update +Description: Update an application scheduled task +Parameters: + - name: --command + type: string + description: Command to run + required: false + - name: --container + type: string + description: Container name to run the command in + required: false + - name: --enabled + type: boolean + description: Whether the task is enabled + required: false + default: true + - name: --frequency + type: string + description: Cron expression or frequency + required: false + - name: --name + type: string + description: Task name + required: false + - name: --timeout + type: integer + description: Timeout in seconds + required: false + default: 300 + Command: coolify app update Description: Update application configuration Parameters: @@ -3199,6 +3278,14 @@ Parameters: description: Webhook secret token required: false +Command: coolify mcp disable +Description: Disable the Coolify MCP server (API: POST /mcp/disable). Requires a root team API token. +Parameters: (None) + +Command: coolify mcp enable +Description: Enable the Coolify MCP server (API: POST /mcp/enable). Requires a root team API token. +Parameters: (None) + Command: coolify notification get Description: Channels: email, discord, slack, telegram, pushover, webhook Parameters: (None) @@ -3213,6 +3300,14 @@ Parameters: Command: coolify private-key add Description: Add a private key +Parameters: + - name: --description + type: string + description: Private key description + required: false + +Command: coolify private-key get +Description: Get a private key by UUID Parameters: (None) Command: coolify private-key list @@ -3223,6 +3318,22 @@ Command: coolify private-key remove Description: Remove a private key Parameters: (None) +Command: coolify private-key update +Description: Update a private key +Parameters: + - name: --description + type: string + description: Private key description + required: false + - name: --name + type: string + description: Private key name + required: false + - name: --private-key + type: string + description: Private key content or path to key file (required) + required: true + Command: coolify project create Description: Create a new project Parameters: @@ -3235,6 +3346,48 @@ Parameters: description: Project name (required) required: true +Command: coolify project delete +Description: Delete a project +Parameters: + - name: --force (-f) + type: boolean + description: Skip confirmation prompt + required: false + default: false + +Command: coolify project environments create +Description: Create an environment in a project +Parameters: + - name: --name + type: string + description: Environment name (required) + required: true + +Command: coolify project environments delete +Description: Delete a project environment +Parameters: + - name: --force (-f) + type: boolean + description: Skip confirmation prompt + required: false + default: false + +Command: coolify project environments list +Description: List environments in a project +Parameters: (None) + +Command: coolify project environments update +Description: Update a project environment +Parameters: + - name: --description + type: string + description: Environment description + required: false + - name: --name + type: string + description: Environment name + required: false + Command: coolify project get Description: Get a project by uuid Parameters: (None) @@ -3243,8 +3396,20 @@ Command: coolify project list Description: List all projects Parameters: (None) +Command: coolify project update +Description: Update a project +Parameters: + - name: --description + type: string + description: Project description + required: false + - name: --name + type: string + description: Project name + required: false + Command: coolify project update-environment -Description: Update a project environment name or description +Description: Update a project environment. Prefer: coolify project environments update Parameters: - name: --description type: string @@ -3380,6 +3545,15 @@ Command: coolify server cloudflare-tunnel get Description: Get Cloudflare tunnel state Parameters: (None) +Command: coolify server cloudflare-tunnel update +Description: Set Cloudflare tunnel enabled state +Parameters: + - name: --enabled + type: boolean + description: Enable (true) or disable (false) Cloudflare tunnel + required: true + default: false + Command: coolify server destinations create Description: Create a server destination Parameters: @@ -3688,6 +3862,83 @@ Parameters: description: JSON fields to patch required: false +Command: coolify server update +Description: Update a server +Parameters: + - name: --concurrent-builds + type: integer + description: Max concurrent builds + required: false + default: 0 + - name: --connection-timeout + type: integer + description: SSH connection timeout in seconds + required: false + default: 0 + - name: --deployment-queue-limit + type: integer + description: Deployment queue limit + required: false + default: 0 + - name: --description + type: string + description: Server description + required: false + - name: --disk-usage-check-frequency + type: string + description: Disk usage check frequency (cron) + required: false + - name: --disk-usage-notification-threshold + type: integer + description: Disk usage notification threshold percent + required: false + default: 0 + - name: --dynamic-timeout + type: integer + description: Dynamic timeout + required: false + default: 0 + - name: --instant-validate + type: boolean + description: Validate server after update + required: false + default: false + - name: --ip + type: string + description: Server IP address + required: false + - name: --is-build-server + type: boolean + description: Mark as build server + required: false + default: false + - name: --is-terminal-enabled + type: boolean + description: Enable terminal access + required: false + default: false + - name: --name + type: string + description: Server name + required: false + - name: --port + type: integer + description: SSH port + required: false + default: 22 + - name: --private-key-uuid + type: string + description: Private key UUID + required: false + - name: --proxy-type + type: string + description: Proxy type (e.g. TRAEFIK, CADDY, NGINX) + required: false + - name: --user + type: string + description: SSH user + required: false + Command: coolify server validate Description: Validate a server Parameters: @@ -4141,7 +4392,7 @@ Parameters: description: New environment variable value (required) required: true -Command: coolify service execute-task +Command: coolify service execute-task Description: Execute a service scheduled task now Parameters: (None) @@ -4365,6 +4616,94 @@ Command: coolify service tag remove Description: Remove a service tag Parameters: (None) +Command: coolify service task create +Description: Create a scheduled task for a service +Parameters: + - name: --command + type: string + description: Command to run (required) + required: true + - name: --container + type: string + description: Container name to run the command in + required: false + - name: --enabled + type: boolean + description: Whether the task is enabled + required: false + default: true + - name: --frequency + type: string + description: Cron expression or frequency (required) + required: true + - name: --name + type: string + description: Task name (required) + required: true + - name: --timeout + type: integer + description: Timeout in seconds + required: false + default: 300 + +Command: coolify service task delete +Description: Delete a service scheduled task +Parameters: (None) + +Command: coolify service task execute +Description: Execute a service scheduled task now +Parameters: (None) + +Command: coolify service task executions +Description: List executions for a service scheduled task +Parameters: (None) + +Command: coolify service task list +Description: List scheduled tasks for a service +Parameters: (None) + +Command: coolify service task update +Description: Update a service scheduled task +Parameters: + - name: --command + type: string + description: Command to run + required: false + - name: --container + type: string + description: Container name to run the command in + required: false + - name: --enabled + type: boolean + description: Whether the task is enabled + required: false + default: true + - name: --frequency + type: string + description: Cron expression or frequency + required: false + - name: --name + type: string + description: Task name + required: false + - name: --timeout + type: integer + description: Timeout in seconds + required: false + default: 300 + +Command: coolify settings email get +Description: Get instance email settings +Parameters: (None) + +Command: coolify settings email update +Description: Pass settings as JSON via --json. Requires write:sensitive. Example: coolify settings email update --json '{"smtp_ehlo_domain":"coolify.example.com"}' +Parameters: + - name: --json + type: string + description: JSON object of fields to update + required: false + Command: coolify shared-env environment create Description: Create environment shared env Parameters: