{"openapi":"3.1.0","info":{"title":"HCode Customer API","version":"1.0.0"},"servers":[{"url":"/api/customer/v1"}],"paths":{"/projects":{"get":{"operationId":"listProjects","summary":"List projects","description":"Find projects you can access. A project key returns only its own project. Use search to filter by name and nextCursor to fetch another page.","tags":["projects"],"x-required-scope":"projects:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"projectType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"framework":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildType":{"anyOf":[{"type":"string"},{"type":"null"}]},"repositoryUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"rootDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"installCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"outputDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerfilePath":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerContextPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerBuildStage":{"anyOf":[{"type":"string"},{"type":"null"}]},"healthCheckPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomain":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastDeployedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubInstallationId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"hasDockerBuildArguments":{"type":"boolean"},"hasDockerBuildSecrets":{"type":"boolean"},"containerPort":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"runtimePortSource":{"anyOf":[{"type":"string","enum":["explicit","start_command","managed_static","default","legacy"]},{"type":"null"}]},"runtimePortLockedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimePortStatusUnavailable":{"type":"boolean"}},"required":["id","name","status"],"additionalProperties":true}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["projects"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}":{"get":{"operationId":"getProject","summary":"Get a project","description":"Read project settings, status and the current runtime port, its source and lock timestamp. If the control plane is unavailable, runtimePortStatusUnavailable is true and the port fields are null. Secret values are excluded.","tags":["projects"],"x-required-scope":"projects:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"projectType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"framework":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildType":{"anyOf":[{"type":"string"},{"type":"null"}]},"repositoryUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"rootDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"installCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"outputDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerfilePath":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerContextPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerBuildStage":{"anyOf":[{"type":"string"},{"type":"null"}]},"healthCheckPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomain":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastDeployedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubInstallationId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"hasDockerBuildArguments":{"type":"boolean"},"hasDockerBuildSecrets":{"type":"boolean"},"containerPort":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"runtimePortSource":{"anyOf":[{"type":"string","enum":["explicit","start_command","managed_static","default","legacy"]},{"type":"null"}]},"runtimePortLockedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimePortStatusUnavailable":{"type":"boolean"}},"required":["id","name","status"],"additionalProperties":true}},"required":["project"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateProject","summary":"Update project settings","description":"Change source, build or runtime settings. containerPort must be an integer from 1 to 65535. Stop the project before changing a locked port, then deploy; a conflicting update returns HTTP 409. Port source and lock timestamps are read-only. Omitted fields keep their values. Save environment variables and build secrets through their dedicated endpoints. To pin a language version, Railpack builds use its RAILPACK_*_VERSION environment variable (for example RAILPACK_NODE_VERSION); Dockerfile builds send dockerRuntimeVersions, such as {\"node\":\"22\"}, which sets the matching build argument and keeps the others. An empty version removes it.","tags":["projects"],"x-required-scope":"projects:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"framework":{"type":"string"},"repositoryUrl":{"type":"string"},"branch":{"type":"string"},"githubInstallationId":{"type":"integer","minimum":1},"rootDirectory":{"type":"string"},"buildType":{"type":"string"},"installCommand":{"type":"string"},"buildCommand":{"type":"string"},"startCommand":{"type":"string"},"outputDirectory":{"type":"string"},"healthCheckPath":{"type":"string"},"dockerfilePath":{"type":"string"},"dockerContextPath":{"type":"string"},"dockerBuildStage":{"type":"string"},"containerPort":{"type":"integer","minimum":1,"maximum":65535},"dockerRuntimeVersions":{"type":"object","properties":{"node":{"type":"string"},"bun":{"type":"string"},"deno":{"type":"string"},"python":{"type":"string"},"go":{"type":"string"},"java":{"type":"string"},"ruby":{"type":"string"},"rust":{"type":"string"},"elixir":{"type":"string"},"erlang":{"type":"string"},"dotnet":{"type":"string"}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false}}}}},"delete":{"operationId":"deleteProject","summary":"Delete a project","description":"Request infrastructure deletion and remove the project from customer inventories. Its operation history remains available so you can check whether deletion finished. While a restore, import or move runs on one of its databases, the request is refused with HTTP 409 workload_busy and nothing is deleted.","tags":["projects"],"x-required-scope":"projects:delete","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/applications":{"post":{"operationId":"createApplicationProject","summary":"Create an application","description":"Create an application from a repository or completed source upload. This requires an organisation key and an available project allowance.","tags":["projects"],"x-required-scope":"projects:write","x-project-scoped":false,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectId":{"type":"string"},"subdomain":{"type":"string"},"domain":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","projectId"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectId":{"type":"string"},"subdomain":{"type":"string"},"domain":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","projectId"],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectId":{"type":"string"},"subdomain":{"type":"string"},"domain":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","projectId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string"},"framework":{"type":"string"},"repositoryUrl":{"type":"string"},"branch":{"type":"string"},"githubInstallationId":{"type":"integer","minimum":1},"rootDirectory":{"type":"string"},"buildType":{"type":"string"},"installCommand":{"type":"string"},"buildCommand":{"type":"string"},"startCommand":{"type":"string"},"outputDirectory":{"type":"string"},"healthCheckPath":{"type":"string"},"dockerfilePath":{"type":"string"},"dockerContextPath":{"type":"string"},"dockerBuildStage":{"type":"string"},"sourceType":{"type":"string","enum":["github","upload"]},"sourceUploadId":{"type":"string","minLength":1},"frameworkPort":{"type":"integer"},"runtimeIntent":{"type":"string"},"autoDeployOnCreate":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}}}}},"/projects/{projectId}/status":{"get":{"operationId":"getProjectStatus","summary":"Get runtime status","description":"Check the current runtime and deployment state. The response identifies cached results and reports pending deployment or crash-loop conditions.","tags":["projects"],"x-required-scope":"projects:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"cached":{"type":"boolean"},"crashLoop":{"type":"boolean"},"deploymentInProgress":{"type":"boolean"}},"required":["status"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/status/refresh":{"post":{"operationId":"refreshProjectStatus","summary":"Refresh runtime status","description":"Discard the cached status and fetch the project state again. This does not start, stop or deploy the project.","tags":["projects"],"x-required-scope":"projects:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/overview":{"get":{"operationId":"getProjectOverview","summary":"Get a project overview","description":"Read project status, deployment diagnosis, databases and backup health. Unavailable data is marked explicitly; lastSuccessfulBackupAt records a completed backup.","tags":["projects"],"x-required-scope":"projects:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"projectType":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"framework":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildType":{"anyOf":[{"type":"string"},{"type":"null"}]},"repositoryUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"rootDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"installCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"startCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"outputDirectory":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerfilePath":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerContextPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"dockerBuildStage":{"anyOf":[{"type":"string"},{"type":"null"}]},"healthCheckPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomain":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastDeployedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"githubInstallationId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"hasDockerBuildArguments":{"type":"boolean"},"hasDockerBuildSecrets":{"type":"boolean"},"containerPort":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"runtimePortSource":{"anyOf":[{"type":"string","enum":["explicit","start_command","managed_static","default","legacy"]},{"type":"null"}]},"runtimePortLockedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimePortStatusUnavailable":{"type":"boolean"}},"required":["id","name","status"],"additionalProperties":true},"status":{"type":"object","properties":{"status":{"type":"string"},"cached":{"type":"boolean"},"crashLoop":{"type":"boolean"},"deploymentInProgress":{"type":"boolean"}},"required":[],"additionalProperties":true},"databases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","type","status"],"additionalProperties":true}},"backups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"type":{"type":"string"},"schedule":{"type":"string"},"databaseId":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastBackupAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"retentionDays":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","type","schedule"],"additionalProperties":true}},"diagnosis":{},"lastSuccessfulBackupAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"backupStatusUnavailable":{"type":"boolean"},"deploymentStatusUnavailable":{"type":"boolean"}},"required":["project","databases","backups"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/environment":{"get":{"operationId":"listEnvironmentVariables","summary":"List environment variables","description":"Read variable names and non-secret values. Secret values are masked.","tags":["configuration"],"x-required-scope":"configuration:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"isSecret":{"type":"boolean"}},"required":["key","value","isSecret"],"additionalProperties":true}}},"required":["variables"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"setEnvironmentVariables","summary":"Set environment variables","description":"Add or update the supplied variables without removing others. Set preserve to true to leave an existing value and its secret classification unchanged.","tags":["configuration"],"x-required-scope":"configuration:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"type":"string"},"isSecret":{"type":"boolean"},"preserve":{"type":"boolean"}},"required":["key"],"additionalProperties":false}}},"required":["variables"],"additionalProperties":false}}}}}},"/projects/{projectId}/environment/{name}":{"delete":{"operationId":"deleteEnvironmentVariable","summary":"Delete an environment variable","description":"Remove the named variable from the project configuration. Other variables keep their current values.","tags":["configuration"],"x-required-scope":"configuration:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/environment/secrets/read":{"post":{"operationId":"readEnvironmentSecrets","summary":"Read selected environment secrets","description":"Retrieve the values for the requested keys. This requires secrets:read; treat the response as sensitive data.","tags":["secrets"],"x-required-scope":"secrets:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"isSecret":{"type":"boolean"}},"required":["key","value","isSecret"],"additionalProperties":true}},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["variables"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]},"isSecret":{"type":"boolean"}},"required":["key","value","isSecret"],"additionalProperties":true}},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["variables"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string","minLength":1}}},"required":["keys"],"additionalProperties":false}}}}}},"/projects/{projectId}/build/arguments":{"put":{"operationId":"setDockerBuildArguments","summary":"Set Docker build arguments","description":"Replace the Docker build-argument configuration. Send an empty value to clear it.","tags":["configuration"],"x-required-scope":"configuration:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"],"additionalProperties":false}}}}}},"/projects/{projectId}/build/secrets":{"put":{"operationId":"setDockerBuildSecrets","summary":"Set Docker build secrets","description":"Replace the Docker build-secret configuration. Send an empty value to clear it. Normal project reads do not return these values.","tags":["configuration"],"x-required-scope":"configuration:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string"}},"required":["value"],"additionalProperties":false}}}}}},"/projects/{projectId}/wordpress/credentials":{"get":{"operationId":"getWordPressCredentials","summary":"Get WordPress credentials","description":"Retrieve the available WordPress administrator credentials. Returns not found if this is not a WordPress project or credentials are unavailable.","tags":["secrets"],"x-required-scope":"secrets:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"},"adminUrl":{"type":"string"},"wpAdminUsername":{"type":"string"},"wpAdminPassword":{"type":"string"}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/deploy":{"post":{"operationId":"deployProject","summary":"Deploy a project","description":"Deploy the configured source, or a completed source upload. The response acknowledges queued work; poll its operation handle for the result.","tags":["deployments"],"x-required-scope":"deployments:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceUploadId":{"type":"string","minLength":1}},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/redeploy-compose":{"post":{"operationId":"redeployComposeProject","summary":"Redeploy a Compose project","description":"Run the existing Compose redeployment workflow for an eligible project.","tags":["deployments"],"x-required-scope":"deployments:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/rollback":{"post":{"operationId":"rollbackProject","summary":"Roll back a deployment","description":"Redeploy an eligible earlier deployment. The project plan must support rollback, and the deployment must belong to this project.","tags":["deployments"],"x-required-scope":"deployments:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"deploymentId":{"type":"string","minLength":1}},"required":["deploymentId"],"additionalProperties":false}}}}}},"/projects/{projectId}/start":{"post":{"operationId":"startProject","summary":"Start a project","description":"Queue a start for a stopped project. Conflicting lifecycle transitions are rejected.","tags":["runtime"],"x-required-scope":"runtime:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/stop":{"post":{"operationId":"stopProject","summary":"Stop a project","description":"Queue a runtime stop while retaining the project configuration.","tags":["runtime"],"x-required-scope":"runtime:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/restart":{"post":{"operationId":"restartProject","summary":"Restart a project","description":"Queue a restart of the current runtime. This does not select a new source revision.","tags":["runtime"],"x-required-scope":"runtime:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/cancel":{"post":{"operationId":"cancelProjectOperation","summary":"Cancel active project work","description":"Cancel the project work that is currently cancellable. This targets the current work, not a supplied operation ID.","tags":["operations"],"x-required-scope":"operations:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/deployments":{"get":{"operationId":"listDeployments","summary":"List deployments","description":"Read deployment history, revisions, timing and available failure diagnoses. Follow nextCursor for another page.","tags":["deployments"],"x-required-scope":"deployments:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"trigger":{"type":"string"},"commitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"commitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["deployments"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/deployments/{deploymentId}":{"get":{"operationId":"getDeployment","summary":"Get a deployment","description":"Read the status, source revision and diagnosis for a deployment in this project.","tags":["deployments"],"x-required-scope":"deployments:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"deploymentId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"trigger":{"type":"string"},"commitSha":{"anyOf":[{"type":"string"},{"type":"null"}]},"commitMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true}},"required":["deployment"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/operations":{"get":{"operationId":"listProjectOperations","summary":"List project operations","description":"List asynchronous operations submitted through the customer API. This remains available after API deletion of the project.","tags":["operations"],"x-required-scope":"operations:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operations"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/operations/{operationId}":{"get":{"operationId":"getProjectOperation","summary":"Get operation progress","description":"Check whether queued work is running, completed, failed or cancelled. Use the public operation ID returned by the customer API.","tags":["operations"],"x-required-scope":"operations:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true}},"required":["operation"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/logs":{"get":{"operationId":"getRuntimeLogs","summary":"Read runtime logs","description":"Read a bounded runtime log snapshot. Use since or the returned cursor to request newer entries; each snapshot is limited to the latest 500 lines.","tags":["logs"],"x-required-scope":"logs:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"tail","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"since","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string"},"message":{"type":"string"},"source":{"type":"string"}},"required":["timestamp","message"],"additionalProperties":true}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["logs","lines","nextCursor"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/logs/stream":{"get":{"operationId":"streamRuntimeLogs","summary":"Follow runtime logs","description":"Receive runtime log updates as server-sent events. Access is rechecked while the stream is open. MCP clients use bounded log reads instead.","tags":["logs"],"x-required-scope":"logs:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"tail","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"since","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"text/event-stream":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/deployments/{deploymentId}/logs":{"get":{"operationId":"getDeploymentLogs","summary":"Read deployment logs","description":"Read a build or deployment log in chunks of up to 32,768 characters. Pass nextCursor back as cursor to continue.","tags":["logs"],"x-required-scope":"logs:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"deploymentId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":32768}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"string"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"truncated":{"type":"boolean"}},"required":["logs","nextCursor","truncated"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/deployments/{deploymentId}/logs/stream":{"get":{"operationId":"streamDeploymentLogs","summary":"Follow deployment logs","description":"Receive build or deployment log updates as server-sent events. MCP clients use the paginated read endpoint instead.","tags":["logs"],"x-required-scope":"logs:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"deploymentId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"text/event-stream":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/source/connections":{"get":{"operationId":"getSourceConnectionStatus","summary":"Check GitHub connection","description":"Find out whether the acting user has a usable GitHub connection or needs to authorize access in the dashboard.","tags":["source"],"x-required-scope":"source:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"query","required":false,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"connected":{"type":"boolean"},"installations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"accountLogin":{"type":"string"},"accountType":{"type":"string"}},"required":[],"additionalProperties":true}},"authorizationRequired":{"type":"boolean"},"authorizationUrl":{"type":"string"}},"required":["connected","installations","authorizationRequired"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/source/repositories":{"get":{"operationId":"listSourceRepositories","summary":"List GitHub repositories","description":"List repositories available through the acting user's GitHub installations.","tags":["source"],"x-required-scope":"source:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"query","required":false,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"connected":{"type":"boolean"},"installations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"accountLogin":{"type":"string"}},"required":[],"additionalProperties":true}},"repos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fullName":{"type":"string"},"private":{"type":"boolean"},"defaultBranch":{"type":"string"},"installationId":{"type":"integer"},"accountLogin":{"type":"string"}},"required":[],"additionalProperties":true}},"installUrl":{"type":"string"}},"required":["connected","installations","repos"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/source/repositories/{repositoryId}/branches":{"get":{"operationId":"listRepositoryBranches","summary":"List repository branches","description":"List branches for an accessible repository. Use the repository ID returned by listSourceRepositories.","tags":["source"],"x-required-scope":"source:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"repositoryId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"installationId","in":"query","required":false,"schema":{"type":"string","minLength":1}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"string"}}},"required":["branches"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/source/repositories/{repositoryId}":{"get":{"operationId":"getRepositoryMetadata","summary":"Get repository details","description":"Read metadata for an accessible repository, including its available branches. GitHub installation credentials stay on the server.","tags":["source"],"x-required-scope":"source:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"repositoryId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"installationId","in":"query","required":false,"schema":{"type":"string","minLength":1}},{"name":"branch","in":"query","required":false,"schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"repositoryUrl":{"type":"string"},"fullName":{"type":"string"},"defaultBranch":{"type":"string"},"branches":{"type":"array","items":{"type":"string"}},"authMode":{"anyOf":[{"type":"string"},{"type":"null"}]},"fromCache":{"type":"boolean"},"rateLimitResetAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"detected":{"type":"boolean"},"framework":{"type":"object","properties":{"name":{"type":"string"},"installCommand":{"type":"string"},"buildCommand":{"type":"string"},"startCommand":{"type":"string"},"outputDirectory":{"type":"string"},"port":{"type":"integer"}},"required":["name","installCommand","buildCommand","startCommand","outputDirectory"],"additionalProperties":true},"runtimeChoiceRequired":{"type":"boolean"},"runtimeChoiceReason":{"type":"string"},"runtimeOptions":{"type":"array","items":{"type":"string"}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/source/inspect":{"post":{"operationId":"inspectSource","summary":"Inspect application source","description":"Inspect an accessible repository or a completed ZIP upload for build settings. Upload inspection reads bounded manifest files without extracting or executing the archive.","tags":["source"],"x-required-scope":"source:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string"},"dockerfile":{"type":"object","properties":{"present":{"type":"boolean"},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"exposedPorts":{"type":"array","items":{"type":"integer"}}},"required":["present"],"additionalProperties":true},"framework":{"anyOf":[{"type":"string"},{"type":"null"}]},"packageManager":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedBuildMode":{"type":"string"},"suggestedStartCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedPort":{"anyOf":[{"type":"integer"},{"type":"null"}]},"suggestedRuntimeIntent":{"anyOf":[{"type":"string"},{"type":"null"}]},"workerLikely":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string"},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["source","dockerfile","suggestedBuildMode","workerLikely","confidence"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string"},"dockerfile":{"type":"object","properties":{"present":{"type":"boolean"},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"exposedPorts":{"type":"array","items":{"type":"integer"}}},"required":["present"],"additionalProperties":true},"framework":{"anyOf":[{"type":"string"},{"type":"null"}]},"packageManager":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedBuildMode":{"type":"string"},"suggestedStartCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedPort":{"anyOf":[{"type":"integer"},{"type":"null"}]},"suggestedRuntimeIntent":{"anyOf":[{"type":"string"},{"type":"null"}]},"workerLikely":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string"},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["source","dockerfile","suggestedBuildMode","workerLikely","confidence"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"repositoryUrl":{"type":"string"},"branch":{"type":"string"},"rootDirectory":{"type":"string"},"githubInstallationId":{"type":"integer","minimum":1},"uploadId":{"type":"string","minLength":1},"projectId":{"type":"string","minLength":1}},"required":[],"additionalProperties":false}}}}}},"/source/detect-framework":{"post":{"operationId":"detectFramework","summary":"Detect a framework","description":"Inspect the repository and optional root directory to suggest a framework and build settings.","tags":["source"],"x-required-scope":"source:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"detected":{"type":"boolean"},"framework":{"type":"object","properties":{"name":{"type":"string"},"installCommand":{"type":"string"},"buildCommand":{"type":"string"},"startCommand":{"type":"string"},"outputDirectory":{"type":"string"},"port":{"type":"integer"}},"required":["name","installCommand","buildCommand","startCommand","outputDirectory"],"additionalProperties":true},"runtimeChoiceRequired":{"type":"boolean"},"runtimeChoiceReason":{"type":"string"},"runtimeOptions":{"type":"array","items":{"type":"string"}},"authMode":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateLimitResetAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"fromCache":{"type":"boolean"}},"required":["detected","framework"],"additionalProperties":true},{"type":"object","properties":{"source":{"type":"string"},"dockerfile":{"type":"object","properties":{"present":{"type":"boolean"},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"exposedPorts":{"type":"array","items":{"type":"integer"}}},"required":["present"],"additionalProperties":true},"framework":{"anyOf":[{"type":"string"},{"type":"null"}]},"packageManager":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedBuildMode":{"type":"string"},"suggestedStartCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedPort":{"anyOf":[{"type":"integer"},{"type":"null"}]},"suggestedRuntimeIntent":{"anyOf":[{"type":"string"},{"type":"null"}]},"workerLikely":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string"}},"required":["source","dockerfile","suggestedBuildMode","workerLikely","confidence"],"additionalProperties":true}],"properties":{"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}}}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"detected":{"type":"boolean"},"framework":{"type":"object","properties":{"name":{"type":"string"},"installCommand":{"type":"string"},"buildCommand":{"type":"string"},"startCommand":{"type":"string"},"outputDirectory":{"type":"string"},"port":{"type":"integer"}},"required":["name","installCommand","buildCommand","startCommand","outputDirectory"],"additionalProperties":true},"runtimeChoiceRequired":{"type":"boolean"},"runtimeChoiceReason":{"type":"string"},"runtimeOptions":{"type":"array","items":{"type":"string"}},"authMode":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateLimitResetAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"fromCache":{"type":"boolean"}},"required":["detected","framework"],"additionalProperties":true},{"type":"object","properties":{"source":{"type":"string"},"dockerfile":{"type":"object","properties":{"present":{"type":"boolean"},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"exposedPorts":{"type":"array","items":{"type":"integer"}}},"required":["present"],"additionalProperties":true},"framework":{"anyOf":[{"type":"string"},{"type":"null"}]},"packageManager":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedBuildMode":{"type":"string"},"suggestedStartCommand":{"anyOf":[{"type":"string"},{"type":"null"}]},"suggestedPort":{"anyOf":[{"type":"integer"},{"type":"null"}]},"suggestedRuntimeIntent":{"anyOf":[{"type":"string"},{"type":"null"}]},"workerLikely":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string"}},"required":["source","dockerfile","suggestedBuildMode","workerLikely","confidence"],"additionalProperties":true}],"properties":{"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}}}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"repositoryUrl":{"type":"string"},"branch":{"type":"string"},"rootDirectory":{"type":"string"},"installationId":{"type":"integer","minimum":1},"uploadId":{"type":"string","minLength":1},"projectId":{"type":"string","minLength":1}},"required":[],"additionalProperties":false}}}}}},"/source/uploads":{"post":{"operationId":"createSourceUpload","summary":"Prepare a source upload","description":"Create a direct-upload target for a source archive. Transfer the bytes using the returned instructions, then call completeSourceUpload.","tags":["source"],"x-required-scope":"source:write","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string","minLength":1},"sizeBytes":{"type":"integer","minimum":1},"contentType":{"type":"string"},"projectId":{"type":"string","minLength":1}},"required":["filename","sizeBytes"],"additionalProperties":false}}}}}},"/source/uploads/content":{"put":{"operationId":"uploadSourceArchive","summary":"Upload a source archive","description":"Send archive bytes through the API with filename in the query string. The response includes the source upload ID.","tags":["source"],"x-required-scope":"source:write","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"filename","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}}}},"/source/uploads/{uploadId}/complete":{"post":{"operationId":"completeSourceUpload","summary":"Complete a source upload","description":"Validate a direct upload before using its ID to inspect source or deploy. The upload must belong to the credential's user and organisation/project.","tags":["source"],"x-required-scope":"source:write","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"uploadId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1}},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/domains":{"get":{"operationId":"listDomains","summary":"List project domains","description":"Read domain routing, primary status and DNS/HTTPS diagnostics. The serving field reports whether the domain works for visitors right now: the platform routes it (verified, project running, not suspended or billing-blocked) and HTTPS is active, or it is routed on a platform that serves plain HTTP only.","tags":["domains"],"x-required-scope":"domains:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"hostname":{"type":"string"},"type":{"type":"string"},"sslMode":{"type":"string"},"sslStatus":{"type":"string"},"httpsStatus":{"type":"string"},"dnsStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"dnsCheckedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"dnsError":{"anyOf":[{"type":"string"},{"type":"null"}]},"httpsCheckedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"httpsError":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"verifiedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPrimary":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"proxyDetected":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serving":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","hostname"],"additionalProperties":true}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["domains"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createDomain","summary":"Add a domain","description":"Add a custom hostname to the project. Hostname validation and the current plan's domain restrictions apply.","tags":["domains"],"x-required-scope":"domains:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domainId":{"type":"string"},"dnsStatus":{"type":"string"},"sslStatus":{"type":"string"},"dnsError":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationStatus":{"type":"string"},"message":{"type":"string"},"expectedDnsRecord":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":true},{"type":"null"}]},"ownershipVerification":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","verified","not_required"]},"record":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":true},{"type":"null"}]},"claimExpiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status"],"additionalProperties":true},{"type":"null"}]},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","domainId"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domainId":{"type":"string"},"dnsStatus":{"type":"string"},"sslStatus":{"type":"string"},"dnsError":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationStatus":{"type":"string"},"message":{"type":"string"},"expectedDnsRecord":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":true},{"type":"null"}]},"ownershipVerification":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","verified","not_required"]},"record":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":true},{"type":"null"}]},"claimExpiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status"],"additionalProperties":true},{"type":"null"}]},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","domainId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"hostname":{"type":"string","minLength":1}},"required":["hostname"],"additionalProperties":false}}}}}},"/projects/{projectId}/domains/{domainId}":{"get":{"operationId":"getDomain","summary":"Get a domain","description":"Read one domain's routing and verification state within this project.","tags":["domains"],"x-required-scope":"domains:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"domainId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"hostname":{"type":"string"},"type":{"type":"string"},"sslMode":{"type":"string"},"sslStatus":{"type":"string"},"httpsStatus":{"type":"string"},"dnsStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"dnsCheckedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"dnsError":{"anyOf":[{"type":"string"},{"type":"null"}]},"httpsCheckedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"httpsError":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"verifiedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPrimary":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"proxyDetected":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"serving":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","hostname"],"additionalProperties":true}},"required":["domain"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteDomain","summary":"Remove a domain","description":"Remove the domain and its project routing.","tags":["domains"],"x-required-scope":"domains:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"domainId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/domains/{domainId}/primary":{"post":{"operationId":"setPrimaryDomain","summary":"Set the primary domain","description":"Make this domain the project's primary hostname.","tags":["domains"],"x-required-scope":"domains:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"domainId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/domains/{domainId}/tls":{"patch":{"operationId":"updateDomainTLSMode","summary":"Change TLS mode","description":"Choose managed or external TLS where the domain is eligible. Verification and certificate status remain controlled by the server.","tags":["domains"],"x-required-scope":"domains:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"domainId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["managed","external"]}},"required":["mode"],"additionalProperties":false}}}}}},"/projects/{projectId}/domains/{domainId}/check":{"post":{"operationId":"checkDomain","summary":"Check domain configuration","description":"Request a DNS and HTTPS configuration check. The response lists the steps of the check in checks (null when the check could not run). A check does not let the caller mark a domain as verified.","tags":["domains"],"x-required-scope":"domains:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"domainId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"checkFailed":{"type":"boolean"},"configured":{"type":"boolean"},"serving":{"type":"boolean"},"verifiedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"dnsStatus":{"type":"string"},"sslStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationStatus":{"type":"string"},"activationMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownershipVerification":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","verified","not_required"]},"record":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":true},{"type":"null"}]},"claimExpiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status"],"additionalProperties":true},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["checkFailed"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"checkFailed":{"type":"boolean"},"configured":{"type":"boolean"},"serving":{"type":"boolean"},"verifiedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"dnsStatus":{"type":"string"},"sslStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"activationStatus":{"type":"string"},"activationMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownershipVerification":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","verified","not_required"]},"record":{"anyOf":[{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"],"additionalProperties":true},{"type":"null"}]},"claimExpiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status"],"additionalProperties":true},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["checkFailed"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/databases":{"get":{"operationId":"listDatabases","summary":"List project databases","description":"Read database names, engines and reconciled status. Connection secrets are excluded.","tags":["databases"],"x-required-scope":"databases:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"databases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","type","status"],"additionalProperties":true}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["databases"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createDatabase","summary":"Create a database","description":"Provision a supported database within the project's organisation limits. Check capabilities before choosing an engine. A project that is being deleted refuses new databases with HTTP 409 project_deleting.","tags":["databases"],"x-required-scope":"databases:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"database":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","type","status"],"additionalProperties":true},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","database"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"database":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","type","status"],"additionalProperties":true},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","database"],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"database":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","type","status"],"additionalProperties":true},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","database"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"type":{"type":"string","enum":["postgres","redis"]}},"required":["name"],"additionalProperties":false}}}}}},"/projects/{projectId}/databases/{databaseId}":{"get":{"operationId":"getDatabase","summary":"Get a database","description":"Read the metadata and status of a database in this project.","tags":["databases"],"x-required-scope":"databases:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"database":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id","name","type","status"],"additionalProperties":true}},"required":["database"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteDatabase","summary":"Delete a database","description":"Request deletion of the database and its data. This requires the separate database-deletion permission. Nothing is deleted when the request is refused with HTTP 409: workload_busy while a restore or import runs on the database, project_deleting while its project is being deleted (that delete removes it).","tags":["databases"],"x-required-scope":"databases:delete","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/databases/{databaseId}/external-access":{"get":{"operationId":"getDatabaseExternalAccess","summary":"Get external database access","description":"Read external connection settings such as host, port and whether access is enabled. This does not return a password.","tags":["databases"],"x-required-scope":"databases:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"externalEnabled":{"type":"boolean"},"externalHost":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalPort":{"anyOf":[{"type":"integer"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateDatabaseExternalAccess","summary":"Change external database access","description":"Enable or disable supported external access to the database.","tags":["databases"],"x-required-scope":"databases:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"externalEnabled":{"type":"boolean"},"externalHost":{"anyOf":[{"type":"string"},{"type":"null"}]},"externalPort":{"anyOf":[{"type":"integer"},{"type":"null"}]},"externalSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false}}}}}},"/projects/{projectId}/databases/{databaseId}/tokens":{"get":{"operationId":"listDatabaseTokens","summary":"List database tokens","description":"List connection-token metadata for the database. Existing token secrets are not returned.","tags":["databases"],"x-required-scope":"databases:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"tokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"rawToken":{"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPermanent":{"type":"boolean"}},"required":["id"],"additionalProperties":true}}},"required":["tokens"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createDatabaseToken","summary":"Create a database token","description":"Issue a connection token and return its secret once. Save its ID if you need to revoke it later.","tags":["database-credentials"],"x-required-scope":"database-credentials:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"token":{"type":"object","properties":{"id":{"type":"string"},"rawToken":{"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPermanent":{"type":"boolean"}},"required":["id"],"additionalProperties":true},"externalConnectionString":{"type":"string"},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","token"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"token":{"type":"object","properties":{"id":{"type":"string"},"rawToken":{"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPermanent":{"type":"boolean"}},"required":["id"],"additionalProperties":true},"externalConnectionString":{"type":"string"},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["success","token"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"expiresIn":{"type":"string","enum":["1h","24h","7d","30d","never"]}},"required":["expiresIn"],"additionalProperties":false}}}}}},"/projects/{projectId}/databases/{databaseId}/tokens/{tokenId}":{"delete":{"operationId":"revokeDatabaseToken","summary":"Revoke a database token","description":"Revoke a connection token belonging to this database.","tags":["database-credentials"],"x-required-scope":"database-credentials:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"tokenId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/databases/{databaseId}/tables":{"get":{"operationId":"listDatabaseTables","summary":"List database tables","description":"List tables in a supported PostgreSQL database. Other engines return an unsupported-operation error.","tags":["database-data"],"x-required-scope":"database-data:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"tables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"type":{"type":"string"}},"required":[],"additionalProperties":true}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/databases/{databaseId}/tables/{table}/schema":{"get":{"operationId":"getDatabaseTableSchema","summary":"Read table columns","description":"Read column names, types and key information for a PostgreSQL table.","tags":["database-data"],"x-required-scope":"database-data:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"table","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"schema","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"nullable":{"type":"boolean"},"defaultValue":{}},"required":[],"additionalProperties":true}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/databases/{databaseId}/tables/{table}/rows":{"get":{"operationId":"getDatabaseTableRows","summary":"Read table rows","description":"Read a bounded page of PostgreSQL rows with optional ordering. The table and ordering identifiers are validated.","tags":["database-data"],"x-required-scope":"database-data:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"table","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"schema","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0}},{"name":"orderBy","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderDir","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"columns":{"type":"array","items":{}},"rowCount":{"type":"integer"},"total":{"type":"integer"}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/databases/{databaseId}/query":{"post":{"operationId":"queryDatabase","summary":"Run a read-only SQL query","description":"Run a bounded query against PostgreSQL. The database enforces a read-only transaction; writes, including writes through functions, are rejected.","tags":["database-query"],"x-required-scope":"database-query:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"fields":{"type":"array","items":{}},"rowCount":{"type":"integer"},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"rows":{"type":"array","items":{"type":"object","additionalProperties":true}},"fields":{"type":"array","items":{}},"rowCount":{"type":"integer"},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1},"params":{"type":"array","items":{}}},"required":["query"],"additionalProperties":false}}}}}},"/projects/{projectId}/databases/{databaseId}/imports/uploads":{"post":{"operationId":"createDatabaseImportUpload","summary":"Prepare an import upload","description":"Create a direct-upload target for a database import file. Complete the upload before starting the import.","tags":["database-imports"],"x-required-scope":"database-imports:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string","minLength":1},"sizeBytes":{"type":"integer","minimum":1},"contentType":{"type":"string"},"projectId":{"type":"string","minLength":1}},"required":["filename","sizeBytes"],"additionalProperties":false}}}}}},"/projects/{projectId}/databases/{databaseId}/imports/uploads/content":{"put":{"operationId":"uploadDatabaseImport","summary":"Upload a database import","description":"Send import-file bytes through the API with filename in the query string. Uploading the file does not start an import.","tags":["database-imports"],"x-required-scope":"database-imports:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"filename","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}}}},"/projects/{projectId}/databases/{databaseId}/imports/uploads/{uploadId}/complete":{"post":{"operationId":"completeDatabaseImportUpload","summary":"Complete an import upload","description":"Validate a direct import upload for this database before starting work.","tags":["database-imports"],"x-required-scope":"database-imports:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"uploadId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string"},"expiresAt":{"type":"string"},"sizeBytes":{"type":"integer"},"filename":{"type":"string"},"directUpload":{"type":"object","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":true}},"required":["url","method","headers"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":["uploadId"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/databases/{databaseId}/imports":{"post":{"operationId":"startDatabaseImport","summary":"Start a database import","description":"Import a completed upload into the selected database. The file must belong to the same user, organisation, project and database.","tags":["database-imports"],"x-required-scope":"database-imports:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string","minLength":1},"mode":{"type":"string"},"dryRun":{"type":"boolean"},"snapshotBeforeImport":{"type":"boolean"},"skipSnapshot":{"type":"boolean"},"reason":{"type":"string"}},"required":["uploadId"],"additionalProperties":false}}}}},"get":{"operationId":"listDatabaseImports","summary":"List database imports","description":"Read the database's import history and progress.","tags":["database-imports"],"x-required-scope":"database-imports:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"imports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":[],"additionalProperties":true}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/databases/{databaseId}/imports/{importId}":{"get":{"operationId":"getDatabaseImport","summary":"Get import progress","description":"Check the status and available failure details for an import in this database.","tags":["database-imports"],"x-required-scope":"database-imports:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"importId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"import":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":[],"additionalProperties":true}},"required":["import"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/databases/{databaseId}/imports/{importId}/logs":{"get":{"operationId":"getDatabaseImportLogs","summary":"Read import logs","description":"Read available diagnostic logs for a database import.","tags":["database-imports"],"x-required-scope":"database-imports:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"databaseId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"importId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"string"}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/backups":{"get":{"operationId":"listBackupPolicies","summary":"List backup schedules","description":"Read configured backup policies and the latest available successful or failed run times.","tags":["backups"],"x-required-scope":"backups:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"backups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"type":{"type":"string"},"schedule":{"type":"string"},"databaseId":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastBackupAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"retentionDays":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","type","schedule"],"additionalProperties":true}}},"required":["backups"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createBackupPolicy","summary":"Create a backup schedule","description":"Configure a WordPress or supported database backup using the permitted storage destination. Database backups require databaseId. Retention follows the organisation's plan.","tags":["backups"],"x-required-scope":"backups:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"backupId":{"type":"string"},"backup":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"type":{"type":"string"},"schedule":{"type":"string"},"databaseId":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastBackupAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"retentionDays":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","type","schedule"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"backupId":{"type":"string"},"backup":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"type":{"type":"string"},"schedule":{"type":"string"},"databaseId":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastBackupAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"retentionDays":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","type","schedule"],"additionalProperties":true},"operationId":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["database","wordpress"]},"databaseId":{"type":"string","minLength":1},"schedule":{"type":"string","minLength":1},"prefix":{"type":"string"},"destinationId":{"type":"string","minLength":1}},"required":["type","schedule"],"additionalProperties":false}}}}}},"/projects/{projectId}/backups/{policyId}":{"get":{"operationId":"getBackupPolicy","summary":"Get a backup schedule","description":"Read one backup policy, its enabled state and recent run status.","tags":["backups"],"x-required-scope":"backups:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"policyId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"backup":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"type":{"type":"string"},"schedule":{"type":"string"},"databaseId":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastBackupAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"retentionDays":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","type","schedule"],"additionalProperties":true}},"required":["backup"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateBackupPolicy","summary":"Update a backup schedule","description":"Change the schedule or enable/disable a backup policy.","tags":["backups"],"x-required-scope":"backups:write","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"policyId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"schedule":{"type":"string"},"enabled":{"type":"boolean"}},"required":[],"additionalProperties":false}}}}},"delete":{"operationId":"deleteBackupPolicy","summary":"Delete a backup schedule","description":"Remove the backup policy. This does not provide a way to delete an individual backup file.","tags":["backups"],"x-required-scope":"backups:delete","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"policyId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/backups/{policyId}/run":{"post":{"operationId":"triggerBackup","summary":"Run a backup now","description":"Queue an immediate run of this backup policy. Poll the returned operation before treating the backup as complete. HTTP 409 means no backup was started: one is already running (conflict), or its database or project was deleted or is being deleted (database_deleted, database_deleting, project_deleting).","tags":["backups"],"x-required-scope":"backups:write","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"policyId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/backups/{policyId}/artifacts":{"get":{"operationId":"listBackupArtifacts","summary":"List backup files","description":"List restore points recorded for this backup policy.","tags":["backups"],"x-required-scope":"backups:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"policyId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"artifacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"status":{"type":"string"},"sizeBytes":{"type":"integer"}},"required":["id"],"additionalProperties":true}}},"required":["artifacts"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/backups/{policyId}/artifacts/{artifactId}/restore":{"post":{"operationId":"restoreBackupArtifact","summary":"Restore a backup","description":"Restore a selected backup file to its compatible target. This changes data and requires the separate restore permission.","tags":["backups"],"x-required-scope":"backups:restore","x-project-scoped":true,"x-idempotency-required":true,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"policyId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"artifactId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"202":{"description":"Operation accepted and queued; poll the returned operation handle","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"operationId":{"type":"string"},"operation":{"type":"object","properties":{"id":{"type":"string"},"operationId":{"type":"string"},"status":{"type":"string"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status"],"additionalProperties":true},"deploymentId":{"type":"string"},"projectId":{"type":"string"},"status":{"type":"string"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"href":{"type":"string"}},"required":["id","status","href"]}}},"required":[],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/projects/{projectId}/backups/{policyId}/artifacts/{artifactId}/download":{"get":{"operationId":"downloadBackupArtifact","summary":"Download a backup","description":"Stream a ready backup file. Composite backups download as ZIP files; incomplete historical file inventories return a conflict error.","tags":["secrets"],"x-required-scope":"secrets:read","x-project-scoped":true,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"policyId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"artifactId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/credential":{"get":{"operationId":"getCredential","summary":"Check credential access","description":"Read the credential's user, organisation, project binding and current permission scopes. This does not return the secret.","tags":["credential"],"x-required-scope":"credential:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"credentialId":{"type":"string"},"userId":{"type":"string"},"organizationId":{"type":"string"},"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"scopes":{"type":"array","items":{"type":"string"}},"role":{"type":"string"}},"required":["credentialId","userId","organizationId","projectId","scopes","role"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/capabilities":{"get":{"operationId":"getCapabilities","summary":"Check available features","description":"Read supported project types, database engines, current plan limits and live usage before starting work. usage comes from the control plane: build minutes for the current window and each quota signal (RAM, storage, bandwidth, build) with its state; enforcing is true while that signal is refusing new work. When usage cannot be read, its fields are null and usageStatusUnavailable is true; never treat that as zero usage.","tags":["projects"],"x-required-scope":"projects:read","x-project-scoped":false,"x-idempotency-required":false,"security":[{"customerKey":[]}],"parameters":[],"responses":{"200":{"description":"Successful response; queued work reports its operation status.","content":{"application/json":{"schema":{"type":"object","properties":{"projectTypes":{"type":"array","items":{"type":"string"}},"databaseEngines":{"type":"array","items":{"type":"string"}},"limits":{"type":"object","properties":{"projects":{"type":"integer"},"databases":{"type":"integer"},"domains":{"type":"integer"}},"required":[],"additionalProperties":true},"scopes":{"type":"array","items":{"type":"string"}},"usage":{"type":"object","properties":{"buildMinutes":{"anyOf":[{"type":"object","properties":{"unlimited":{"type":"boolean"},"quotaMinutes":{"type":"integer"},"usedMinutes":{"type":"integer"},"remainingMinutes":{"type":"integer"},"windowStart":{"type":"string"},"windowEnd":{"type":"string"}},"required":[],"additionalProperties":true},{"type":"null"}]},"signals":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"signal":{"type":"string"},"unit":{"type":"string"},"quotaBytes":{"type":"integer"},"usedBytes":{"type":"integer"},"usedPct":{"type":"number"},"state":{"type":"string"},"enforcing":{"type":"boolean"},"oldestReportAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":[],"additionalProperties":true}},{"type":"null"}]}},"required":[],"additionalProperties":true},"usageStatusUnavailable":{"type":"boolean"}},"required":["projectTypes","databaseEngines","limits","scopes","usage","usageStatusUnavailable"],"additionalProperties":true}}}},"default":{"description":"Structured API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"customerKey":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true,"description":"Fields a refusal code adds for the caller to act on. root_domain_use_www carries suggestedHostname (the www address to add instead) and expectedDnsRecord (its CNAME record); domain_claim_pending carries ownershipVerification (the TXT record that proves the hostname is yours)."}}}}}}}}