{"openapi":"3.1.0","info":{"title":"Sevalla API docs","version":"1.0.0"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key authentication. Pass your API key as a Bearer token in the Authorization header."}},"schemas":{}},"paths":{"/applications":{"post":{"operationId":"createApplicationV3","summary":"Create application","tags":["Applications"],"description":"Create a new application from a Git repository or Docker image. The application is created with a default web process, auto deploy disabled, and an initial deployment is not triggered automatically - use the Deploy endpoint to start the first deployment. Auto deploy can be enabled later via the Update endpoint but only works with privateGit applications. If Sevalla cannot access the Git repository, the request fails with a 400 error that explains why and links to the page where access can be granted (for example the repository access settings of the GitHub App used by Sevalla).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2,"maxLength":64,"description":"Human-readable name for the new application. Must be between 2 and 64 characters.","example":"My Application"},"cluster_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the cluster (data center location) where the application will be created.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"source":{"type":"string","enum":["privateGit","publicGit","dockerImage"],"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry.","example":"privateGit"},"project_id":{"description":"Identifier of the project to group this application under. When omitted, the application is not assigned to any project.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"git_type":{"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Required for private git sources when the provider cannot be auto-detected.","example":"github","anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}]},"repo_url":{"description":"Full URL of the Git repository. Required when source is `privateGit` or `publicGit`.","example":"https://github.com/user/repo","anyOf":[{"type":"string"},{"type":"null"}]},"default_branch":{"description":"Git branch used for deployments. When omitted, the repository default branch is used.","example":"main","anyOf":[{"type":"string"},{"type":"null"}]},"docker_image":{"description":"Docker image reference including tag or digest. Required when source is `dockerImage`.","example":"nginx:latest","anyOf":[{"type":"string"},{"type":"null"}]},"docker_registry_credential_id":{"description":"Identifier of a stored Docker registry credential for pulling private images. Only used when source is `dockerImage`.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["display_name","cluster_id","source"],"additionalProperties":false}}}},"x-required-permissions":["APP:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this application is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-app"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Kubernetes namespace where the application workloads run. Assigned automatically during creation.","example":"my-app-abc123"},"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name shown in the dashboard and API responses","example":"My Application"},"source":{"type":"string","enum":["privateGit","publicGit","dockerImage","app"],"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry. `app` - pipeline promotion target with no Git repository or Docker image connected; deployments arrive by promoting from another pipeline stage.","example":"privateGit"},"type":{"type":"string","enum":["app","previewApp"],"description":"Application type. `app` - standard application. `previewApp` - ephemeral preview environment created from a pull request.","example":"app"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deleting","appDeletionFailed","deploymentCancelled"]},{"type":"null"}],"description":"Current status of the application reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"},"build_cache_enabled":{"type":"boolean","description":"When enabled, build artifacts are cached between deployments to speed up subsequent builds","example":true},"git_lfs_enabled":{"type":"boolean","description":"When enabled, Git LFS objects are fetched during the source checkout step of a deployment. Enabled by default. Disable this to skip LFS downloads and speed up checkout when the repository contains LFS files that are not needed at build time.","example":true},"hibernation_enabled":{"type":"boolean","description":"When enabled, the application automatically scales down to zero after a period of inactivity and wakes up on the next incoming request","example":false},"hibernate_after_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Number of seconds of inactivity before the application is hibernated. Only applies when hibernation is enabled.","example":3600},"auto_deploy":{"type":"boolean","description":"When enabled, a new deployment is automatically triggered on every push to the default branch. Only applies to applications with a private Git connection (privateGit) - has no effect on publicGit or dockerImage applications.","example":true},"is_suspended":{"type":"boolean","description":"Whether the application is currently suspended. Suspended applications have all processes stopped but retain their configuration.","example":false},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for non-git sources.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository. Null for Docker image source applications.","example":"https://github.com/user/repo"},"default_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main"},"docker_image":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker image reference including tag or digest. Only set for applications with `dockerImage` source.","example":"nginx:latest"},"build_type":{"type":"string","enum":["dockerfile","pack","nixpacks","railpack"],"description":"Build strategy used to build the application. `nixpacks` - auto-detected build system. `railpack` - auto-detected build system, successor to Nixpacks. `dockerfile` - build using a Dockerfile. `pack` - build using Cloud Native Buildpacks.","example":"nixpacks"},"build_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the build directory within the repository. Defaults to the repository root.","example":"."},"pack_builder":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloud Native Buildpacks builder image. Only applies when build type is `pack`.","example":"heroku/builder:22"},"nixpacks_version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pinned Nixpacks version. When null, the platform default version is used. Only applies when build type is `nixpacks`.","example":"1.21.0"},"dockerfile_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the Dockerfile within the repository. Only applies when build type is `dockerfile`.","example":"Dockerfile"},"docker_context":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker build context path relative to the repository root. Only applies when build type is `dockerfile`.","example":"."},"allow_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths that trigger a deployment when changed. When set, only commits touching these paths will trigger auto deploy.","example":["src/**","package.json"]},"ignore_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy.","example":["docs/**","README.md"]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the user who created the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","namespace","display_name","source","type","status","build_cache_enabled","git_lfs_enabled","hibernation_enabled","hibernate_after_seconds","auto_deploy","is_suspended","git_type","repo_url","default_branch","docker_image","build_type","build_path","pack_builder","nixpacks_version","dockerfile_path","docker_context","allow_deploy_paths","ignore_deploy_paths","created_by","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"get":{"operationId":"listApplicationsV3","summary":"List applications","tags":["Applications"],"description":"Retrieve a paginated list of all applications the authenticated API key has access to. Results are ordered by name and can be paginated using the `limit` and `offset` query parameters. Use the `status`, `source`, `project_id`, and `search` query parameters to narrow down the results - multiple filters combine with AND.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"example":"deploymentSuccess","type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deleting","appDeletionFailed","deploymentCancelled"]},"in":"query","name":"status","required":false,"description":"Return only applications with this status. `deploymentInProgress` - a deployment is currently running. `deploymentSuccess` - the latest deployment succeeded. `deploymentFailed` - the latest deployment failed. `deploymentCancelled` - the latest deployment was cancelled. `deleting` - the application is being deleted. `appDeletionFailed` - the last deletion attempt failed."},{"schema":{"example":"privateGit","type":"string","enum":["privateGit","publicGit","dockerImage","app"]},"in":"query","name":"source","required":false,"description":"Return only applications with this source type. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry. `app` - pipeline promotion target with no Git repository or Docker image connected; deployments arrive by promoting from another pipeline stage."},{"schema":{"example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"project_id","required":false,"description":"Return only applications that belong to this project."},{"schema":{"example":"my-app","type":"string","minLength":1,"maxLength":100},"in":"query","name":"search","required":false,"description":"Return only applications whose name or display name contains this text. Matching is case-insensitive."}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-app"},"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name shown in the dashboard and API responses","example":"My Application"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deleting","appDeletionFailed","deploymentCancelled"]},{"type":"null"}],"description":"Current status of the application reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"},"type":{"type":"string","enum":["app","previewApp"],"description":"Application type. `app` - standard application. `previewApp` - ephemeral preview environment created from a pull request.","example":"app"},"source":{"type":"string","enum":["privateGit","publicGit","dockerImage","app"],"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry. `app` - pipeline promotion target with no Git repository or Docker image connected; deployments arrive by promoting from another pipeline stage.","example":"privateGit"},"is_suspended":{"type":"boolean","description":"Whether the application is currently suspended. Suspended applications have all processes stopped but retain their configuration.","example":false},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","display_name","status","type","source","is_suspended","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}":{"get":{"operationId":"getApplicationV3","summary":"Get application","tags":["Applications"],"description":"Retrieve the full details of an application including its source configuration, build settings, and current status.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this application is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-app"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Kubernetes namespace where the application workloads run. Assigned automatically during creation.","example":"my-app-abc123"},"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name shown in the dashboard and API responses","example":"My Application"},"source":{"type":"string","enum":["privateGit","publicGit","dockerImage","app"],"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry. `app` - pipeline promotion target with no Git repository or Docker image connected; deployments arrive by promoting from another pipeline stage.","example":"privateGit"},"type":{"type":"string","enum":["app","previewApp"],"description":"Application type. `app` - standard application. `previewApp` - ephemeral preview environment created from a pull request.","example":"app"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deleting","appDeletionFailed","deploymentCancelled"]},{"type":"null"}],"description":"Current status of the application reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"},"build_cache_enabled":{"type":"boolean","description":"When enabled, build artifacts are cached between deployments to speed up subsequent builds","example":true},"git_lfs_enabled":{"type":"boolean","description":"When enabled, Git LFS objects are fetched during the source checkout step of a deployment. Enabled by default. Disable this to skip LFS downloads and speed up checkout when the repository contains LFS files that are not needed at build time.","example":true},"hibernation_enabled":{"type":"boolean","description":"When enabled, the application automatically scales down to zero after a period of inactivity and wakes up on the next incoming request","example":false},"hibernate_after_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Number of seconds of inactivity before the application is hibernated. Only applies when hibernation is enabled.","example":3600},"auto_deploy":{"type":"boolean","description":"When enabled, a new deployment is automatically triggered on every push to the default branch. Only applies to applications with a private Git connection (privateGit) - has no effect on publicGit or dockerImage applications.","example":true},"is_suspended":{"type":"boolean","description":"Whether the application is currently suspended. Suspended applications have all processes stopped but retain their configuration.","example":false},"is_cdn_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the CDN is turned on for the application. Use the CDN toggle endpoint to change it. Null when the status is temporarily unavailable.","example":true},"is_edge_cache_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether edge caching is turned on for the application. Use the edge cache toggle endpoint to change it. Null when the status is temporarily unavailable.","example":false},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for non-git sources.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository. Null for Docker image source applications.","example":"https://github.com/user/repo"},"default_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main"},"docker_image":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker image reference including tag or digest. Only set for applications with `dockerImage` source.","example":"nginx:latest"},"build_type":{"type":"string","enum":["dockerfile","pack","nixpacks","railpack"],"description":"Build strategy used to build the application. `nixpacks` - auto-detected build system. `railpack` - auto-detected build system, successor to Nixpacks. `dockerfile` - build using a Dockerfile. `pack` - build using Cloud Native Buildpacks.","example":"nixpacks"},"build_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the build directory within the repository. Defaults to the repository root.","example":"."},"pack_builder":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloud Native Buildpacks builder image. Only applies when build type is `pack`.","example":"heroku/builder:22"},"nixpacks_version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pinned Nixpacks version. When null, the platform default version is used. Only applies when build type is `nixpacks`.","example":"1.21.0"},"dockerfile_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the Dockerfile within the repository. Only applies when build type is `dockerfile`.","example":"Dockerfile"},"docker_context":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker build context path relative to the repository root. Only applies when build type is `dockerfile`.","example":"."},"allow_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths that trigger a deployment when changed. When set, only commits touching these paths will trigger auto deploy.","example":["src/**","package.json"]},"ignore_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy.","example":["docs/**","README.md"]},"buildpacks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the buildpack","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"source":{"type":"string","description":"Buildpack source URL","example":"heroku/nodejs"},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Order in which the buildpack is applied during the build","example":0}},"required":["id","source","order"],"additionalProperties":false},"description":"Custom buildpacks configured for this application. Only applies when build type is `pack`."},"cluster_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the cluster where this application is deployed","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"docker_registry_credential_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the Docker registry credential used to pull the container image. Only applies to applications with `dockerImage` source.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the user who created the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","namespace","display_name","source","type","status","build_cache_enabled","git_lfs_enabled","hibernation_enabled","hibernate_after_seconds","auto_deploy","is_suspended","is_cdn_enabled","is_edge_cache_enabled","git_type","repo_url","default_branch","docker_image","build_type","build_path","pack_builder","nixpacks_version","dockerfile_path","docker_context","allow_deploy_paths","ignore_deploy_paths","buildpacks","cluster_id","docker_registry_credential_id","created_by","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateApplicationV3","summary":"Update application","tags":["Applications"],"description":"Update one or more properties of an existing application. Only include the fields you want to change - omitted fields are left unchanged. Changes to build settings take effect on the next deployment. Changing the source switches how the application is built and deployed - for example, from a Git repository to a Docker image.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"Human-readable name shown in the dashboard and API responses","example":"My Application","type":"string","minLength":1,"maxLength":64},"auto_deploy":{"description":"Enable or disable automatic deployments on every push to the default branch. Only works with privateGit applications - has no effect on publicGit or dockerImage applications.","example":true,"type":"boolean"},"default_branch":{"description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main","type":"string","minLength":1},"hibernation_enabled":{"description":"Enable or disable automatic hibernation. When enabled, the application scales down to zero after a period of inactivity.","example":false,"type":"boolean"},"hibernate_after_seconds":{"description":"Number of seconds of inactivity before the application is hibernated. Only applies when hibernation is enabled.","example":3600,"type":"integer","minimum":1,"maximum":604800},"build_type":{"description":"Build strategy to use. `nixpacks` - auto-detected build system. `railpack` - auto-detected build system, successor to Nixpacks. `dockerfile` - build using a Dockerfile. `pack` - build using Cloud Native Buildpacks.","example":"nixpacks","type":"string","enum":["dockerfile","pack","nixpacks","railpack"]},"build_path":{"description":"Relative path to the build directory within the repository. Defaults to the repository root.","example":".","type":"string"},"dockerfile_path":{"description":"Relative path to the Dockerfile within the repository. Only applies when build type is `dockerfile`.","example":"Dockerfile","type":"string"},"docker_context":{"description":"Docker build context path relative to the repository root. Only applies when build type is `dockerfile`.","example":".","type":"string"},"build_cache_enabled":{"description":"Enable or disable build caching. When enabled, build artifacts are cached between deployments.","example":true,"type":"boolean"},"git_lfs_enabled":{"description":"Enable or disable Git LFS during the source checkout step. Enabled by default. When enabled, LFS objects are fetched on every deployment. Disable to skip LFS downloads.","example":true,"type":"boolean"},"docker_registry_credential_id":{"description":"Identifier of a Docker registry credential. Used for pulling private base images when build type is `dockerfile`, or for pulling the container image when source is `dockerImage`.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pack_builder":{"description":"Cloud Native Buildpacks builder image. `heroku/builder:22` - Heroku-22 stack. `heroku/builder:24` - Heroku-24 stack. Only applies when build type is `pack`.","example":"heroku/builder:22","type":"string","enum":["heroku/builder:22","heroku/builder:24"]},"nixpacks_version":{"description":"Pinned Nixpacks version. When not set, the platform default version is used. Only applies when build type is `nixpacks`.","example":"1.29","type":"string","enum":["1.29","1.39","1.41"]},"buildpacks":{"description":"List of buildpacks to use during the build phase. Only applies when build type is `pack`.","type":"array","items":{"type":"object","properties":{"order":{"type":"integer","minimum":0,"maximum":20,"description":"Order in which this buildpack runs during the build phase","example":1},"source":{"type":"string","maxLength":500,"description":"Buildpack source URL or identifier","example":"heroku/nodejs"}},"required":["order","source"]}},"allow_deploy_paths":{"description":"Glob patterns for file paths that trigger a deployment. When set, only commits touching these paths trigger auto deploy. Mutually exclusive with ignore_deploy_paths.","example":["src/**","package.json"],"type":"array","items":{"type":"string"}},"ignore_deploy_paths":{"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy. Mutually exclusive with allow_deploy_paths.","example":["docs/**","README.md"],"type":"array","items":{"type":"string"}},"source":{"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry.","example":"privateGit","type":"string","enum":["privateGit","publicGit","dockerImage"]},"git_type":{"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Only used when source is `privateGit` or `publicGit`.","example":"github","type":"string","enum":["github","bitbucket","gitlab"]},"repo_url":{"description":"Full URL of the Git repository. Required when source is `privateGit` or `publicGit`.","example":"https://github.com/user/repo","type":"string"},"docker_image":{"description":"Docker image reference including tag or digest. Required when source is `dockerImage`.","example":"nginx:latest","type":"string"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this application is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-app"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Kubernetes namespace where the application workloads run. Assigned automatically during creation.","example":"my-app-abc123"},"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name shown in the dashboard and API responses","example":"My Application"},"source":{"type":"string","enum":["privateGit","publicGit","dockerImage","app"],"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry. `app` - pipeline promotion target with no Git repository or Docker image connected; deployments arrive by promoting from another pipeline stage.","example":"privateGit"},"type":{"type":"string","enum":["app","previewApp"],"description":"Application type. `app` - standard application. `previewApp` - ephemeral preview environment created from a pull request.","example":"app"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deleting","appDeletionFailed","deploymentCancelled"]},{"type":"null"}],"description":"Current status of the application reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"},"build_cache_enabled":{"type":"boolean","description":"When enabled, build artifacts are cached between deployments to speed up subsequent builds","example":true},"git_lfs_enabled":{"type":"boolean","description":"When enabled, Git LFS objects are fetched during the source checkout step of a deployment. Enabled by default. Disable this to skip LFS downloads and speed up checkout when the repository contains LFS files that are not needed at build time.","example":true},"hibernation_enabled":{"type":"boolean","description":"When enabled, the application automatically scales down to zero after a period of inactivity and wakes up on the next incoming request","example":false},"hibernate_after_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Number of seconds of inactivity before the application is hibernated. Only applies when hibernation is enabled.","example":3600},"auto_deploy":{"type":"boolean","description":"When enabled, a new deployment is automatically triggered on every push to the default branch. Only applies to applications with a private Git connection (privateGit) - has no effect on publicGit or dockerImage applications.","example":true},"is_suspended":{"type":"boolean","description":"Whether the application is currently suspended. Suspended applications have all processes stopped but retain their configuration.","example":false},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for non-git sources.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository. Null for Docker image source applications.","example":"https://github.com/user/repo"},"default_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main"},"docker_image":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker image reference including tag or digest. Only set for applications with `dockerImage` source.","example":"nginx:latest"},"build_type":{"type":"string","enum":["dockerfile","pack","nixpacks","railpack"],"description":"Build strategy used to build the application. `nixpacks` - auto-detected build system. `railpack` - auto-detected build system, successor to Nixpacks. `dockerfile` - build using a Dockerfile. `pack` - build using Cloud Native Buildpacks.","example":"nixpacks"},"build_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the build directory within the repository. Defaults to the repository root.","example":"."},"pack_builder":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloud Native Buildpacks builder image. Only applies when build type is `pack`.","example":"heroku/builder:22"},"nixpacks_version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pinned Nixpacks version. When null, the platform default version is used. Only applies when build type is `nixpacks`.","example":"1.21.0"},"dockerfile_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the Dockerfile within the repository. Only applies when build type is `dockerfile`.","example":"Dockerfile"},"docker_context":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker build context path relative to the repository root. Only applies when build type is `dockerfile`.","example":"."},"allow_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths that trigger a deployment when changed. When set, only commits touching these paths will trigger auto deploy.","example":["src/**","package.json"]},"ignore_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy.","example":["docs/**","README.md"]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the user who created the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","namespace","display_name","source","type","status","build_cache_enabled","git_lfs_enabled","hibernation_enabled","hibernate_after_seconds","auto_deploy","is_suspended","git_type","repo_url","default_branch","docker_image","build_type","build_path","pack_builder","nixpacks_version","dockerfile_path","docker_context","allow_deploy_paths","ignore_deploy_paths","created_by","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteApplicationV3","summary":"Delete application","tags":["Applications"],"description":"Permanently delete an application and all of its associated resources including processes, deployments, and environment variables. This operation is irreversible and cannot be performed while a deployment is in progress.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Application is being deleted"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/activate":{"post":{"operationId":"activateApplicationV3","summary":"Activate application","tags":["Applications"],"description":"Activate a previously suspended application, restoring all processes to their running state. The operation is asynchronous - the application status will transition once activation completes.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Application activation started"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/suspend":{"post":{"operationId":"suspendApplicationV3","summary":"Suspend application","tags":["Applications"],"description":"Suspend a running application by stopping all of its processes. The application configuration, environment variables, and deployment history are preserved. Use the activate endpoint to restore the application.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Application suspension started"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/clone":{"post":{"operationId":"cloneApplicationV3","summary":"Clone application","tags":["Applications"],"description":"Create an identical copy of an existing application including its processes, environment variables, build settings, and configuration. The cloned application is created in a new namespace and an initial deployment is triggered automatically.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2,"maxLength":64,"description":"Human-readable name for the cloned application. Must be unique within the company.","example":"My App (Clone)"},"cluster_id":{"description":"Target cluster to create the cloned application in. When omitted, the clone is created in the same cluster as the source application.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["display_name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ","APP:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this application is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-app"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Kubernetes namespace where the application workloads run. Assigned automatically during creation.","example":"my-app-abc123"},"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name shown in the dashboard and API responses","example":"My Application"},"source":{"type":"string","enum":["privateGit","publicGit","dockerImage","app"],"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL. `dockerImage` - Docker container image from a registry. `app` - pipeline promotion target with no Git repository or Docker image connected; deployments arrive by promoting from another pipeline stage.","example":"privateGit"},"type":{"type":"string","enum":["app","previewApp"],"description":"Application type. `app` - standard application. `previewApp` - ephemeral preview environment created from a pull request.","example":"app"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deleting","appDeletionFailed","deploymentCancelled"]},{"type":"null"}],"description":"Current status of the application reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"},"build_cache_enabled":{"type":"boolean","description":"When enabled, build artifacts are cached between deployments to speed up subsequent builds","example":true},"git_lfs_enabled":{"type":"boolean","description":"When enabled, Git LFS objects are fetched during the source checkout step of a deployment. Enabled by default. Disable this to skip LFS downloads and speed up checkout when the repository contains LFS files that are not needed at build time.","example":true},"hibernation_enabled":{"type":"boolean","description":"When enabled, the application automatically scales down to zero after a period of inactivity and wakes up on the next incoming request","example":false},"hibernate_after_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Number of seconds of inactivity before the application is hibernated. Only applies when hibernation is enabled.","example":3600},"auto_deploy":{"type":"boolean","description":"When enabled, a new deployment is automatically triggered on every push to the default branch. Only applies to applications with a private Git connection (privateGit) - has no effect on publicGit or dockerImage applications.","example":true},"is_suspended":{"type":"boolean","description":"Whether the application is currently suspended. Suspended applications have all processes stopped but retain their configuration.","example":false},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for non-git sources.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository. Null for Docker image source applications.","example":"https://github.com/user/repo"},"default_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main"},"docker_image":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker image reference including tag or digest. Only set for applications with `dockerImage` source.","example":"nginx:latest"},"build_type":{"type":"string","enum":["dockerfile","pack","nixpacks","railpack"],"description":"Build strategy used to build the application. `nixpacks` - auto-detected build system. `railpack` - auto-detected build system, successor to Nixpacks. `dockerfile` - build using a Dockerfile. `pack` - build using Cloud Native Buildpacks.","example":"nixpacks"},"build_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the build directory within the repository. Defaults to the repository root.","example":"."},"pack_builder":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cloud Native Buildpacks builder image. Only applies when build type is `pack`.","example":"heroku/builder:22"},"nixpacks_version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pinned Nixpacks version. When null, the platform default version is used. Only applies when build type is `nixpacks`.","example":"1.21.0"},"dockerfile_path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to the Dockerfile within the repository. Only applies when build type is `dockerfile`.","example":"Dockerfile"},"docker_context":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Docker build context path relative to the repository root. Only applies when build type is `dockerfile`.","example":"."},"allow_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths that trigger a deployment when changed. When set, only commits touching these paths will trigger auto deploy.","example":["src/**","package.json"]},"ignore_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy.","example":["docs/**","README.md"]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the user who created the application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the application was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","namespace","display_name","source","type","status","build_cache_enabled","git_lfs_enabled","hibernation_enabled","hibernate_after_seconds","auto_deploy","is_suspended","git_type","repo_url","default_branch","docker_image","build_type","build_path","pack_builder","nixpacks_version","dockerfile_path","docker_context","allow_deploy_paths","ignore_deploy_paths","created_by","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/deployments":{"get":{"operationId":"listDeploymentsV3","summary":"List deployments","tags":["Applications"],"description":"Retrieve a paginated list of all deployments for an application, ordered by most recent first. Each deployment includes its status, source details, and timestamps.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this deployment belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"anyOf":[{"type":"string","enum":["waiting","inProgress","success","failed","cancelled","skipped"]},{"type":"null"}],"description":"Current status of the deployment in its lifecycle","example":"success"},"type":{"anyOf":[{"type":"string","enum":["manual","automatic"]},{"type":"null"}],"description":"How the deployment was initiated. `manual` - triggered by a user or API call. `automatic` - triggered automatically by a git push or webhook.","example":"manual"},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific action that initiated the deployment, such as MANUAL_DEPLOY, ROLLBACK_DEPLOYMENT, AUTO_DEPLOY_ON_PUSH, or RESTART","example":"MANUAL_DEPLOY"},"initiator_type":{"type":"string","enum":["USER","STAFF","SYSTEM","AUTO_DEPLOY"],"description":"Who started the deployment. `USER` - a member of your company, from the dashboard or the API. `STAFF` - the Sevalla team, for example to roll out a required security update. The reason is in `note`. `AUTO_DEPLOY` - started automatically by a Git push, a deploy hook, or a new preview app. `SYSTEM` - started by Sevalla itself.","example":"USER"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why the Sevalla team started this deployment, for example `Required security update`. Only set when `initiator_type` is `STAFF`, otherwise null.","example":"Required security update"},"steps":{"type":"array","items":{"type":"string","enum":["checkout","build","rollout","syncConnections"]},"description":"Ordered list of pipeline steps this deployment will execute. `checkout` - clone the repository. `build` - build the application image. `rollout` - deploy the image to the cluster. `syncConnections` - synchronize database and service connections.","example":["rollout"]},"docker_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Docker image built or used for this deployment, including the registry path and tag","example":"us-central1-docker.pkg.dev/project/repo/image:abc123"},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the source repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for Docker image deployments.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository used for this deployment. Null for Docker image deployments.","example":"https://github.com/user/repo"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch that was deployed. Null for Docker image deployments.","example":"main"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full SHA hash of the Git commit that was deployed","example":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message of the deployed Git commit, truncated to 1000 characters","example":"feat: add new feature"},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username of the Git commit author on the hosting provider","example":"octocat"},"author_img":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Avatar URL of the Git commit author on the hosting provider","example":"https://avatars.githubusercontent.com/u/583231"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment started executing, in ISO 8601 format. Null if still waiting.","example":"2025-01-30T00:00:00.000Z"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment finished (succeeded, failed, or was cancelled), in ISO 8601 format. Null if still in progress.","example":"2025-01-30T00:05:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","status","type","trigger","initiator_type","note","steps","docker_image_url","git_type","repo_url","branch","commit_sha","commit_message","author_login","author_img","started_at","finished_at","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"triggerDeploymentV3","summary":"Trigger deployment","tags":["Applications"],"description":"Trigger a new deployment for an application. By default, deploys the latest commit on the default branch. You can optionally specify a different branch, a specific commit, a Docker image, or restart from the last successful deployment. You can also rebuild without the build cache. The deployment runs asynchronously - use the get deployment endpoint to track its progress.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branch":{"description":"Git branch to deploy. When omitted, the application default branch is used. Only applies to Git-based applications.","example":"main","type":"string"},"commit_sha":{"description":"Full 40 character SHA of the commit to deploy. When omitted, the latest commit on the branch is deployed. The commit must be reachable from `branch` (or the default branch when `branch` is omitted), otherwise the build fails at checkout. Its message and author are read from the repository; when they cannot be, the deployment records the SHA alone. Only applies to Git-based applications and cannot be combined with `is_restart`.","example":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","type":"string","pattern":"^[0-9a-f]{40}$"},"docker_image":{"description":"Docker image reference to deploy (e.g., `nginx:latest`). Only applies to applications with `dockerImage` source.","example":"nginx:latest","type":"string"},"is_restart":{"default":false,"description":"When true, redeploys using the existing build artifact from the last successful deployment, skipping the build step. Useful when you have updated runtime-level configuration and do not need to rebuild the application.","type":"boolean"},"skip_build_cache":{"default":false,"description":"When true, every layer is rebuilt from scratch instead of being reused from the build cache. Use it to pick up updated system packages or dependencies that a cached build would keep. If the application has build cache enabled, the cache is refreshed with the new layers, so later builds do not fall back to the old ones. Only applies to Git-based applications and cannot be combined with `is_restart`.","type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this deployment belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"anyOf":[{"type":"string","enum":["waiting","inProgress","success","failed","cancelled","skipped"]},{"type":"null"}],"description":"Current status of the deployment in its lifecycle","example":"success"},"type":{"anyOf":[{"type":"string","enum":["manual","automatic"]},{"type":"null"}],"description":"How the deployment was initiated. `manual` - triggered by a user or API call. `automatic` - triggered automatically by a git push or webhook.","example":"manual"},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific action that initiated the deployment, such as MANUAL_DEPLOY, ROLLBACK_DEPLOYMENT, AUTO_DEPLOY_ON_PUSH, or RESTART","example":"MANUAL_DEPLOY"},"initiator_type":{"type":"string","enum":["USER","STAFF","SYSTEM","AUTO_DEPLOY"],"description":"Who started the deployment. `USER` - a member of your company, from the dashboard or the API. `STAFF` - the Sevalla team, for example to roll out a required security update. The reason is in `note`. `AUTO_DEPLOY` - started automatically by a Git push, a deploy hook, or a new preview app. `SYSTEM` - started by Sevalla itself.","example":"USER"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why the Sevalla team started this deployment, for example `Required security update`. Only set when `initiator_type` is `STAFF`, otherwise null.","example":"Required security update"},"steps":{"type":"array","items":{"type":"string","enum":["checkout","build","rollout","syncConnections"]},"description":"Ordered list of pipeline steps this deployment will execute. `checkout` - clone the repository. `build` - build the application image. `rollout` - deploy the image to the cluster. `syncConnections` - synchronize database and service connections.","example":["rollout"]},"docker_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Docker image built or used for this deployment, including the registry path and tag","example":"us-central1-docker.pkg.dev/project/repo/image:abc123"},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the source repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for Docker image deployments.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository used for this deployment. Null for Docker image deployments.","example":"https://github.com/user/repo"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch that was deployed. Null for Docker image deployments.","example":"main"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full SHA hash of the Git commit that was deployed","example":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message of the deployed Git commit, truncated to 1000 characters","example":"feat: add new feature"},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username of the Git commit author on the hosting provider","example":"octocat"},"author_img":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Avatar URL of the Git commit author on the hosting provider","example":"https://avatars.githubusercontent.com/u/583231"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment started executing, in ISO 8601 format. Null if still waiting.","example":"2025-01-30T00:00:00.000Z"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment finished (succeeded, failed, or was cancelled), in ISO 8601 format. Null if still in progress.","example":"2025-01-30T00:05:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","status","type","trigger","initiator_type","note","steps","docker_image_url","git_type","repo_url","branch","commit_sha","commit_message","author_login","author_img","started_at","finished_at","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/deployments/{deployment_id}":{"get":{"operationId":"getDeploymentV3","summary":"Get deployment","tags":["Applications"],"description":"Retrieve the full details of a specific deployment including its current status, pipeline steps, Git source information, and timestamps.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"deployment_id","required":true,"description":"Deployment identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this deployment belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"anyOf":[{"type":"string","enum":["waiting","inProgress","success","failed","cancelled","skipped"]},{"type":"null"}],"description":"Current status of the deployment in its lifecycle","example":"success"},"type":{"anyOf":[{"type":"string","enum":["manual","automatic"]},{"type":"null"}],"description":"How the deployment was initiated. `manual` - triggered by a user or API call. `automatic` - triggered automatically by a git push or webhook.","example":"manual"},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific action that initiated the deployment, such as MANUAL_DEPLOY, ROLLBACK_DEPLOYMENT, AUTO_DEPLOY_ON_PUSH, or RESTART","example":"MANUAL_DEPLOY"},"initiator_type":{"type":"string","enum":["USER","STAFF","SYSTEM","AUTO_DEPLOY"],"description":"Who started the deployment. `USER` - a member of your company, from the dashboard or the API. `STAFF` - the Sevalla team, for example to roll out a required security update. The reason is in `note`. `AUTO_DEPLOY` - started automatically by a Git push, a deploy hook, or a new preview app. `SYSTEM` - started by Sevalla itself.","example":"USER"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why the Sevalla team started this deployment, for example `Required security update`. Only set when `initiator_type` is `STAFF`, otherwise null.","example":"Required security update"},"steps":{"type":"array","items":{"type":"string","enum":["checkout","build","rollout","syncConnections"]},"description":"Ordered list of pipeline steps this deployment will execute. `checkout` - clone the repository. `build` - build the application image. `rollout` - deploy the image to the cluster. `syncConnections` - synchronize database and service connections.","example":["rollout"]},"docker_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Docker image built or used for this deployment, including the registry path and tag","example":"us-central1-docker.pkg.dev/project/repo/image:abc123"},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the source repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for Docker image deployments.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository used for this deployment. Null for Docker image deployments.","example":"https://github.com/user/repo"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch that was deployed. Null for Docker image deployments.","example":"main"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full SHA hash of the Git commit that was deployed","example":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message of the deployed Git commit, truncated to 1000 characters","example":"feat: add new feature"},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username of the Git commit author on the hosting provider","example":"octocat"},"author_img":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Avatar URL of the Git commit author on the hosting provider","example":"https://avatars.githubusercontent.com/u/583231"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment started executing, in ISO 8601 format. Null if still waiting.","example":"2025-01-30T00:00:00.000Z"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment finished (succeeded, failed, or was cancelled), in ISO 8601 format. Null if still in progress.","example":"2025-01-30T00:05:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","status","type","trigger","initiator_type","note","steps","docker_image_url","git_type","repo_url","branch","commit_sha","commit_message","author_login","author_img","started_at","finished_at","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/deployments/rollback":{"post":{"operationId":"rollbackDeploymentV3","summary":"Rollback deployment","tags":["Applications"],"description":"Roll back an application to the most recent successful deployment. This creates a new deployment that reuses the build artifact from the previous successful deployment, skipping the build step entirely.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this deployment belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"anyOf":[{"type":"string","enum":["waiting","inProgress","success","failed","cancelled","skipped"]},{"type":"null"}],"description":"Current status of the deployment in its lifecycle","example":"success"},"type":{"anyOf":[{"type":"string","enum":["manual","automatic"]},{"type":"null"}],"description":"How the deployment was initiated. `manual` - triggered by a user or API call. `automatic` - triggered automatically by a git push or webhook.","example":"manual"},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific action that initiated the deployment, such as MANUAL_DEPLOY, ROLLBACK_DEPLOYMENT, AUTO_DEPLOY_ON_PUSH, or RESTART","example":"MANUAL_DEPLOY"},"initiator_type":{"type":"string","enum":["USER","STAFF","SYSTEM","AUTO_DEPLOY"],"description":"Who started the deployment. `USER` - a member of your company, from the dashboard or the API. `STAFF` - the Sevalla team, for example to roll out a required security update. The reason is in `note`. `AUTO_DEPLOY` - started automatically by a Git push, a deploy hook, or a new preview app. `SYSTEM` - started by Sevalla itself.","example":"USER"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why the Sevalla team started this deployment, for example `Required security update`. Only set when `initiator_type` is `STAFF`, otherwise null.","example":"Required security update"},"steps":{"type":"array","items":{"type":"string","enum":["checkout","build","rollout","syncConnections"]},"description":"Ordered list of pipeline steps this deployment will execute. `checkout` - clone the repository. `build` - build the application image. `rollout` - deploy the image to the cluster. `syncConnections` - synchronize database and service connections.","example":["rollout"]},"docker_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Docker image built or used for this deployment, including the registry path and tag","example":"us-central1-docker.pkg.dev/project/repo/image:abc123"},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the source repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for Docker image deployments.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository used for this deployment. Null for Docker image deployments.","example":"https://github.com/user/repo"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch that was deployed. Null for Docker image deployments.","example":"main"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full SHA hash of the Git commit that was deployed","example":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message of the deployed Git commit, truncated to 1000 characters","example":"feat: add new feature"},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username of the Git commit author on the hosting provider","example":"octocat"},"author_img":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Avatar URL of the Git commit author on the hosting provider","example":"https://avatars.githubusercontent.com/u/583231"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment started executing, in ISO 8601 format. Null if still waiting.","example":"2025-01-30T00:00:00.000Z"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment finished (succeeded, failed, or was cancelled), in ISO 8601 format. Null if still in progress.","example":"2025-01-30T00:05:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","status","type","trigger","initiator_type","note","steps","docker_image_url","git_type","repo_url","branch","commit_sha","commit_message","author_login","author_img","started_at","finished_at","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/deployments/{deployment_id}/cancel":{"post":{"operationId":"cancelDeploymentV3","summary":"Cancel deployment","tags":["Applications"],"description":"Cancel a deployment that is currently in progress or waiting. Deployments in the `waiting` status are skipped immediately, while `inProgress` deployments are stopped mid-execution. Deployments that already finished (including ones whose build completed while the request was in flight) cannot be cancelled and return a 400.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"deployment_id","required":true,"description":"Deployment identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Cancellation result message","example":"Deployment is being cancelled"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/deployments/{deployment_id}/logs":{"get":{"operationId":"getApplicationDeploymentLogsV3","summary":"Get application deployment logs","tags":["Applications"],"description":"Retrieve build and deployment logs for a specific deployment. These include output from the build process and rollout steps. Returns the most recent `limit` entries in the time range, oldest first by default (set `order=desc` for newest first). Use `search` for a case-insensitive text match on the message, and `filters` for filtering by severity, message, tags, or attributes.","parameters":[{"schema":{"example":"2026-02-22T14:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":false,"description":"Start of the time range in ISO 8601 format. Defaults to 1 hour before `to` if not provided."},{"schema":{"example":"2026-02-22T15:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":false,"description":"End of the time range in ISO 8601 format. Defaults to now if not provided."},{"schema":{"example":"connection refused","type":"string","minLength":1,"maxLength":500},"in":"query","name":"search","required":false,"description":"Case-insensitive substring match on the log message. Only entries whose message contains this text are returned. Can be combined with `filters`."},{"schema":{"example":"[{\"key\":\"severity\",\"operator\":\"EQUALS\",\"value\":\"ERROR\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects. All filters must match (they are combined with AND). Each filter has a `key`, an `operator`, and a `value` (or `values` for `IS_IN` and `IS_NOT_IN`).\n\nSupported keys: `severity`, `message`, `id`, `tags.<name>` for a tag value, and `attributes.<name>` for an attribute value (use dots for nested attribute fields, e.g. `attributes.request.path`).\n\nSupported operators: `EQUALS`, `DOES_NOT_EQUAL`, `CONTAINS`, `DOES_NOT_CONTAIN`, `STARTS_WITH`, `DOES_NOT_START_WITH`, `ENDS_WITH`, `DOES_NOT_END_WITH`, `GREATER_THAN_OR_EQUALS` and `LESS_THAN_OR_EQUALS` (numeric comparison), `IS_IN` and `IS_NOT_IN` (match against a list in `values`). Text operators are case-sensitive - use `search` for a case-insensitive message match. An unknown key or operator returns a 400.\n\nExample: [{\"key\":\"severity\",\"operator\":\"IS_IN\",\"values\":[\"ERROR\",\"WARN\"]},{\"key\":\"message\",\"operator\":\"CONTAINS\",\"value\":\"timeout\"}]"},{"schema":{"default":"asc","example":"desc","type":"string","enum":["asc","desc"]},"in":"query","name":"order","required":false,"description":"Sort order of the returned entries. `asc` - oldest first (default), `desc` - newest first. The order does not change which entries are returned: when more entries match than `limit`, the most recent ones are always returned."},{"schema":{"default":1000,"example":1000,"type":"integer","minimum":1,"maximum":5000},"in":"query","name":"limit","required":false,"description":"Maximum number of log entries to return (1-5000). When more entries match, the most recent ones in the time range are returned."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"deployment_id","required":true,"description":"Deployment identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the log entry","example":"abc123"},"message":{"type":"string","description":"Log message content","example":"Server started on port 3000"},"service":{"type":"string","description":"Service that produced the log entry, such as APP_RUNTIME, APP_ACCESS, APP_DEPLOYMENT, SS_DEPLOYMENT, or SS_ACCESS","example":"APP_RUNTIME"},"severity":{"type":"string","description":"Log severity level such as INFO, WARN, ERROR, or DEBUG","example":"INFO"},"timestamp":{"type":"string","description":"Formatted timestamp of the log entry","example":"2026-02-22 15:30:00.000"},"tags":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Key-value pairs of tags associated with the log entry, such as container name or resource ID","example":{"idApp":"fb5e5168-4281-4bec-94c5-0d1584e9e657","container":"web"}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Additional structured attributes attached to the log entry","example":{}},"unix_timestamp":{"type":"number","description":"Unix timestamp of the log entry in microseconds","example":1740236400000000}},"required":["id","message","service","severity","timestamp","tags","attributes","unix_timestamp"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes":{"get":{"operationId":"listProcessesV3","summary":"List processes","tags":["Applications"],"description":"Retrieve a paginated list of all processes for an application, ordered by their display order and creation time. Each process includes its runtime configuration, scaling strategy, and resource limits.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the process","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this process belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":64,"description":"Unique key identifying the process within the application, derived from the Procfile entry name","example":"web"},"type":{"anyOf":[{"type":"string","enum":["web","worker","cron","job"]},{"type":"null"}],"description":"Process runtime type. `web` - HTTP server process that handles incoming web traffic. `worker` - background process that runs continuously. `cron` - scheduled process that runs at specified intervals. `job` - one-time process that runs to completion and then stops.","example":"web"},"display_name":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}],"description":"Human-readable name for the process shown in the dashboard","example":"Web Process"},"entrypoint":{"type":"string","maxLength":1024,"description":"Command used to start the process","example":"npm start"},"port":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}],"description":"Port number the process listens on for incoming connections","example":8080},"is_ingress_enabled":{"type":"boolean","description":"Whether external traffic routing is enabled for this process. Only applicable to web processes.","example":true},"ingress_protocol":{"anyOf":[{"type":"string","enum":["http","grpc"]},{"type":"null"}],"description":"Protocol used for ingress traffic. `http` - standard HTTP/HTTPS traffic. `grpc` - gRPC protocol. Only applicable to web processes.","example":"http"},"scaling_strategy":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Manual scaling type","enum":["manual"]},"config":{"type":"object","properties":{"instanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Number of instances to run","example":1}},"required":["instanceCount"],"additionalProperties":false,"description":"Manual scaling configuration"}},"required":["type","config"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","description":"Horizontal auto-scaling type","enum":["horizontal"]},"config":{"type":"object","properties":{"minInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Minimum number of instances","example":1},"maxInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Maximum number of instances","example":5},"targetCpuPercent":{"description":"Target CPU utilization percentage for autoscaling","example":70,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"targetMemoryPercent":{"description":"Target memory utilization percentage for autoscaling","example":80,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"scaleUpIntervalSeconds":{"description":"Cooldown period in seconds between scale-up events","example":60,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleUpIncrement":{"description":"Number of instances to add per scale-up event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"scaleDownIntervalSeconds":{"description":"Cooldown period in seconds between scale-down events","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleDownIncrement":{"description":"Number of instances to remove per scale-down event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]}},"required":["minInstanceCount","maxInstanceCount"],"additionalProperties":false,"description":"Horizontal auto-scaling configuration"}},"required":["type","config"],"additionalProperties":false}]},{"type":"null"}],"description":"Scaling configuration for the process","example":{"type":"manual","config":{"instanceCount":1}}},"resource_type_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the process resource type (machine size) assigned to this process. Use the List Process Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this process","example":"s1"},"cpu_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum CPU allocation in millicores","example":500},"memory_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum memory allocation in megabytes","example":512},"schedule":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Cron expression defining the execution schedule. Only applicable to cron processes.","example":"0 * * * *"},"time_zone":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"IANA time zone for the cron schedule. Only applicable to cron processes.","example":"America/New_York"},"concurrency_policy":{"anyOf":[{"type":"string","enum":["Forbid","Replace"]},{"type":"null"}],"description":"How to handle a scheduled run when the previous run is still active. `Forbid` skips the new run until the current one finishes. `Replace` cancels the running job and starts a new one, which prevents a stuck run from blocking the schedule. Defaults to `Forbid`. Only applicable to cron processes.","example":"Forbid"},"active_deadline_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum run time in seconds. For cron processes, each scheduled run is terminated when it runs longer than this, and null means no limit. For job processes, the job is stopped and the deployment fails when the job runs longer than this, and null means the default of 600 seconds. A job is also stopped when the deployment reaches its overall time limit (30 minutes by default). Not used for web and worker processes.","example":3600},"job_start_policy":{"anyOf":[{"type":"string","enum":["beforeDeployment","afterSuccessDeployment","afterFailedDeployment"]},{"type":"null"}],"description":"When the job process should run relative to deployments. `beforeDeployment` - run after the build and before the new version of the other processes rolls out. If the job fails, the deployment fails and the running processes stay on the previous version. `afterSuccessDeployment` - run after a successful deployment. `afterFailedDeployment` - run after a failed deployment. Only applicable to job processes.","example":"afterSuccessDeployment"},"liveness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes liveness probe configuration. Used to detect when a process is stuck and needs to be restarted. Only populated for web processes.","example":{"httpGet":{"path":"/health","port":8080,"scheme":"HTTP"}}},"readiness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes readiness probe configuration. Used to determine when a process is ready to receive traffic. Only populated for web processes.","example":{"httpGet":{"path":"/ready","port":8080,"scheme":"HTTP"}}},"internal_hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Internal Kubernetes DNS hostname for service-to-service communication within the cluster","example":"my-app-web.my-app-abc123.svc.cluster.local"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","key","type","display_name","entrypoint","port","is_ingress_enabled","ingress_protocol","scaling_strategy","resource_type_id","resource_type_name","cpu_limit","memory_limit","schedule","time_zone","concurrency_policy","active_deadline_seconds","job_start_policy","liveness_probe","readiness_probe","internal_hostname","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createProcessV3","summary":"Create process","tags":["Applications"],"description":"Create a new process for an application. Each application can have at most one web process. The process is created with the specified resource type and scaling strategy. A deployment is required after creation for the new process to take effect.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the process shown in the dashboard","example":"web"},"entrypoint":{"description":"Command used to start the process. If omitted, defaults to an empty string.","example":"npm start","type":"string","maxLength":1024},"type":{"type":"string","enum":["web","worker","cron","job"],"description":"Process runtime type. `web` - HTTP server process that handles incoming web traffic. `worker` - background process that runs continuously. `cron` - scheduled process that runs at specified intervals. `job` - one-time process that runs to completion and then stops.","example":"web"},"resource_type_id":{"type":"string","description":"Identifier of the process resource type (machine size) to assign. Use the List Process Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"scaling_strategy":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Manual scaling type","enum":["manual"]},"config":{"type":"object","properties":{"instanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Number of instances to run","example":1}},"required":["instanceCount"],"description":"Manual scaling configuration"}},"required":["type","config"]},{"type":"object","properties":{"type":{"type":"string","description":"Horizontal auto-scaling type","enum":["horizontal"]},"config":{"type":"object","properties":{"minInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Minimum number of instances","example":1},"maxInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Maximum number of instances","example":5},"targetCpuPercent":{"description":"Target CPU utilization percentage for autoscaling","example":70,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"targetMemoryPercent":{"description":"Target memory utilization percentage for autoscaling","example":80,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"scaleUpIntervalSeconds":{"description":"Cooldown period in seconds between scale-up events","example":60,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleUpIncrement":{"description":"Number of instances to add per scale-up event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"scaleDownIntervalSeconds":{"description":"Cooldown period in seconds between scale-down events","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleDownIncrement":{"description":"Number of instances to remove per scale-down event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]}},"required":["minInstanceCount","maxInstanceCount"],"description":"Horizontal auto-scaling configuration"}},"required":["type","config"]}],"description":"Scaling configuration for the process"},"port":{"description":"Port number the process listens on for incoming connections","example":8080,"type":"integer","minimum":1,"maximum":65535},"schedule":{"description":"Cron expression defining the execution schedule. Required for cron processes.","example":"0 */6 * * *","type":"string","maxLength":100},"time_zone":{"description":"IANA time zone for the cron schedule. Only applicable to cron processes.","example":"America/New_York","type":"string","maxLength":100},"concurrency_policy":{"description":"How to handle a scheduled run when the previous run is still active. `Forbid` skips the new run until the current one finishes. `Replace` cancels the running job and starts a new one, which prevents a stuck run from blocking the schedule. Defaults to `Forbid`. Only applicable to cron processes.","example":"Forbid","type":"string","enum":["Forbid","Replace"]},"active_deadline_seconds":{"description":"Maximum run time in seconds. For cron processes, each scheduled run is terminated when it runs longer than this. Leave unset or send 0 for no limit. For job processes, the job is stopped and the deployment fails when the job runs longer than this. A job is also stopped when the deployment reaches its overall time limit (30 minutes by default). Leave unset or send 0 to use the default of 600 seconds. Ignored for web and worker processes.","example":3600,"type":"integer","minimum":0,"maximum":9007199254740991},"job_start_policy":{"description":"When the job process should run relative to deployments. `beforeDeployment` - run after the build and before the new version of the other processes rolls out. If the job fails, the deployment fails and the running processes stay on the previous version. `afterSuccessDeployment` - run after a successful deployment. `afterFailedDeployment` - run after a failed deployment. Required for job processes.","example":"beforeDeployment","type":"string","enum":["beforeDeployment","afterSuccessDeployment","afterFailedDeployment"]},"liveness_probe":{"description":"Kubernetes liveness probe configuration. Only applicable to web processes.","type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"]},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"]}},{"type":"null"}]}}},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"]},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}}},"readiness_probe":{"description":"Kubernetes readiness probe configuration. Only applicable to web processes.","type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"]},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"]}},{"type":"null"}]}}},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"]},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}}}},"required":["display_name","type","resource_type_id","scaling_strategy"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the process","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this process belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":64,"description":"Unique key identifying the process within the application, derived from the Procfile entry name","example":"web"},"type":{"anyOf":[{"type":"string","enum":["web","worker","cron","job"]},{"type":"null"}],"description":"Process runtime type. `web` - HTTP server process that handles incoming web traffic. `worker` - background process that runs continuously. `cron` - scheduled process that runs at specified intervals. `job` - one-time process that runs to completion and then stops.","example":"web"},"display_name":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}],"description":"Human-readable name for the process shown in the dashboard","example":"Web Process"},"entrypoint":{"type":"string","maxLength":1024,"description":"Command used to start the process","example":"npm start"},"port":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}],"description":"Port number the process listens on for incoming connections","example":8080},"is_ingress_enabled":{"type":"boolean","description":"Whether external traffic routing is enabled for this process. Only applicable to web processes.","example":true},"ingress_protocol":{"anyOf":[{"type":"string","enum":["http","grpc"]},{"type":"null"}],"description":"Protocol used for ingress traffic. `http` - standard HTTP/HTTPS traffic. `grpc` - gRPC protocol. Only applicable to web processes.","example":"http"},"scaling_strategy":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Manual scaling type","enum":["manual"]},"config":{"type":"object","properties":{"instanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Number of instances to run","example":1}},"required":["instanceCount"],"additionalProperties":false,"description":"Manual scaling configuration"}},"required":["type","config"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","description":"Horizontal auto-scaling type","enum":["horizontal"]},"config":{"type":"object","properties":{"minInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Minimum number of instances","example":1},"maxInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Maximum number of instances","example":5},"targetCpuPercent":{"description":"Target CPU utilization percentage for autoscaling","example":70,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"targetMemoryPercent":{"description":"Target memory utilization percentage for autoscaling","example":80,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"scaleUpIntervalSeconds":{"description":"Cooldown period in seconds between scale-up events","example":60,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleUpIncrement":{"description":"Number of instances to add per scale-up event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"scaleDownIntervalSeconds":{"description":"Cooldown period in seconds between scale-down events","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleDownIncrement":{"description":"Number of instances to remove per scale-down event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]}},"required":["minInstanceCount","maxInstanceCount"],"additionalProperties":false,"description":"Horizontal auto-scaling configuration"}},"required":["type","config"],"additionalProperties":false}]},{"type":"null"}],"description":"Scaling configuration for the process","example":{"type":"manual","config":{"instanceCount":1}}},"resource_type_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the process resource type (machine size) assigned to this process. Use the List Process Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this process","example":"s1"},"cpu_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum CPU allocation in millicores","example":500},"memory_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum memory allocation in megabytes","example":512},"schedule":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Cron expression defining the execution schedule. Only applicable to cron processes.","example":"0 * * * *"},"time_zone":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"IANA time zone for the cron schedule. Only applicable to cron processes.","example":"America/New_York"},"concurrency_policy":{"anyOf":[{"type":"string","enum":["Forbid","Replace"]},{"type":"null"}],"description":"How to handle a scheduled run when the previous run is still active. `Forbid` skips the new run until the current one finishes. `Replace` cancels the running job and starts a new one, which prevents a stuck run from blocking the schedule. Defaults to `Forbid`. Only applicable to cron processes.","example":"Forbid"},"active_deadline_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum run time in seconds. For cron processes, each scheduled run is terminated when it runs longer than this, and null means no limit. For job processes, the job is stopped and the deployment fails when the job runs longer than this, and null means the default of 600 seconds. A job is also stopped when the deployment reaches its overall time limit (30 minutes by default). Not used for web and worker processes.","example":3600},"job_start_policy":{"anyOf":[{"type":"string","enum":["beforeDeployment","afterSuccessDeployment","afterFailedDeployment"]},{"type":"null"}],"description":"When the job process should run relative to deployments. `beforeDeployment` - run after the build and before the new version of the other processes rolls out. If the job fails, the deployment fails and the running processes stay on the previous version. `afterSuccessDeployment` - run after a successful deployment. `afterFailedDeployment` - run after a failed deployment. Only applicable to job processes.","example":"afterSuccessDeployment"},"liveness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes liveness probe configuration. Used to detect when a process is stuck and needs to be restarted. Only populated for web processes.","example":{"httpGet":{"path":"/health","port":8080,"scheme":"HTTP"}}},"readiness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes readiness probe configuration. Used to determine when a process is ready to receive traffic. Only populated for web processes.","example":{"httpGet":{"path":"/ready","port":8080,"scheme":"HTTP"}}},"internal_hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Internal Kubernetes DNS hostname for service-to-service communication within the cluster","example":"my-app-web.my-app-abc123.svc.cluster.local"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","key","type","display_name","entrypoint","port","is_ingress_enabled","ingress_protocol","scaling_strategy","resource_type_id","resource_type_name","cpu_limit","memory_limit","schedule","time_zone","concurrency_policy","active_deadline_seconds","job_start_policy","liveness_probe","readiness_probe","internal_hostname","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}":{"get":{"operationId":"getProcessV3","summary":"Get process","tags":["Applications"],"description":"Retrieve the full details of a specific process including its runtime configuration, scaling strategy, resource limits, and probe settings.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the process","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this process belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":64,"description":"Unique key identifying the process within the application, derived from the Procfile entry name","example":"web"},"type":{"anyOf":[{"type":"string","enum":["web","worker","cron","job"]},{"type":"null"}],"description":"Process runtime type. `web` - HTTP server process that handles incoming web traffic. `worker` - background process that runs continuously. `cron` - scheduled process that runs at specified intervals. `job` - one-time process that runs to completion and then stops.","example":"web"},"display_name":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}],"description":"Human-readable name for the process shown in the dashboard","example":"Web Process"},"entrypoint":{"type":"string","maxLength":1024,"description":"Command used to start the process","example":"npm start"},"port":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}],"description":"Port number the process listens on for incoming connections","example":8080},"is_ingress_enabled":{"type":"boolean","description":"Whether external traffic routing is enabled for this process. Only applicable to web processes.","example":true},"ingress_protocol":{"anyOf":[{"type":"string","enum":["http","grpc"]},{"type":"null"}],"description":"Protocol used for ingress traffic. `http` - standard HTTP/HTTPS traffic. `grpc` - gRPC protocol. Only applicable to web processes.","example":"http"},"scaling_strategy":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Manual scaling type","enum":["manual"]},"config":{"type":"object","properties":{"instanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Number of instances to run","example":1}},"required":["instanceCount"],"additionalProperties":false,"description":"Manual scaling configuration"}},"required":["type","config"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","description":"Horizontal auto-scaling type","enum":["horizontal"]},"config":{"type":"object","properties":{"minInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Minimum number of instances","example":1},"maxInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Maximum number of instances","example":5},"targetCpuPercent":{"description":"Target CPU utilization percentage for autoscaling","example":70,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"targetMemoryPercent":{"description":"Target memory utilization percentage for autoscaling","example":80,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"scaleUpIntervalSeconds":{"description":"Cooldown period in seconds between scale-up events","example":60,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleUpIncrement":{"description":"Number of instances to add per scale-up event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"scaleDownIntervalSeconds":{"description":"Cooldown period in seconds between scale-down events","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleDownIncrement":{"description":"Number of instances to remove per scale-down event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]}},"required":["minInstanceCount","maxInstanceCount"],"additionalProperties":false,"description":"Horizontal auto-scaling configuration"}},"required":["type","config"],"additionalProperties":false}]},{"type":"null"}],"description":"Scaling configuration for the process","example":{"type":"manual","config":{"instanceCount":1}}},"resource_type_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the process resource type (machine size) assigned to this process. Use the List Process Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this process","example":"s1"},"cpu_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum CPU allocation in millicores","example":500},"memory_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum memory allocation in megabytes","example":512},"schedule":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Cron expression defining the execution schedule. Only applicable to cron processes.","example":"0 * * * *"},"time_zone":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"IANA time zone for the cron schedule. Only applicable to cron processes.","example":"America/New_York"},"concurrency_policy":{"anyOf":[{"type":"string","enum":["Forbid","Replace"]},{"type":"null"}],"description":"How to handle a scheduled run when the previous run is still active. `Forbid` skips the new run until the current one finishes. `Replace` cancels the running job and starts a new one, which prevents a stuck run from blocking the schedule. Defaults to `Forbid`. Only applicable to cron processes.","example":"Forbid"},"active_deadline_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum run time in seconds. For cron processes, each scheduled run is terminated when it runs longer than this, and null means no limit. For job processes, the job is stopped and the deployment fails when the job runs longer than this, and null means the default of 600 seconds. A job is also stopped when the deployment reaches its overall time limit (30 minutes by default). Not used for web and worker processes.","example":3600},"job_start_policy":{"anyOf":[{"type":"string","enum":["beforeDeployment","afterSuccessDeployment","afterFailedDeployment"]},{"type":"null"}],"description":"When the job process should run relative to deployments. `beforeDeployment` - run after the build and before the new version of the other processes rolls out. If the job fails, the deployment fails and the running processes stay on the previous version. `afterSuccessDeployment` - run after a successful deployment. `afterFailedDeployment` - run after a failed deployment. Only applicable to job processes.","example":"afterSuccessDeployment"},"liveness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes liveness probe configuration. Used to detect when a process is stuck and needs to be restarted. Only populated for web processes.","example":{"httpGet":{"path":"/health","port":8080,"scheme":"HTTP"}}},"readiness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes readiness probe configuration. Used to determine when a process is ready to receive traffic. Only populated for web processes.","example":{"httpGet":{"path":"/ready","port":8080,"scheme":"HTTP"}}},"internal_hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Internal Kubernetes DNS hostname for service-to-service communication within the cluster","example":"my-app-web.my-app-abc123.svc.cluster.local"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","key","type","display_name","entrypoint","port","is_ingress_enabled","ingress_protocol","scaling_strategy","resource_type_id","resource_type_name","cpu_limit","memory_limit","schedule","time_zone","concurrency_policy","active_deadline_seconds","job_start_policy","liveness_probe","readiness_probe","internal_hostname","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateProcessV3","summary":"Update process","tags":["Applications"],"description":"Update the configuration of an existing process. Only the provided fields are changed - all other fields retain their current values. Changes to resource type, scaling, or probes take effect on the next deployment. Protocol changes are applied asynchronously.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"Human-readable name for the process shown in the dashboard","example":"web","type":"string","minLength":1,"maxLength":255},"entrypoint":{"description":"Command used to start the process","example":"npm start","type":"string","maxLength":1024},"resource_type_id":{"description":"Identifier of the process resource type (machine size) to assign. Use the List Process Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string"},"scaling_strategy":{"description":"Scaling configuration for the process","oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Manual scaling type","enum":["manual"]},"config":{"type":"object","properties":{"instanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Number of instances to run","example":1}},"required":["instanceCount"],"description":"Manual scaling configuration"}},"required":["type","config"]},{"type":"object","properties":{"type":{"type":"string","description":"Horizontal auto-scaling type","enum":["horizontal"]},"config":{"type":"object","properties":{"minInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Minimum number of instances","example":1},"maxInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Maximum number of instances","example":5},"targetCpuPercent":{"description":"Target CPU utilization percentage for autoscaling","example":70,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"targetMemoryPercent":{"description":"Target memory utilization percentage for autoscaling","example":80,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"scaleUpIntervalSeconds":{"description":"Cooldown period in seconds between scale-up events","example":60,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleUpIncrement":{"description":"Number of instances to add per scale-up event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"scaleDownIntervalSeconds":{"description":"Cooldown period in seconds between scale-down events","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleDownIncrement":{"description":"Number of instances to remove per scale-down event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]}},"required":["minInstanceCount","maxInstanceCount"],"description":"Horizontal auto-scaling configuration"}},"required":["type","config"]}]},"port":{"description":"Port number the process listens on for incoming connections","example":8080,"type":"integer","minimum":1,"maximum":65535},"is_ingress_enabled":{"description":"Whether external traffic routing is enabled for this process. Only applicable to web processes.","example":true,"type":"boolean"},"ingress_protocol":{"description":"Ingress protocol for the process. `http` - standard HTTP/HTTPS traffic. `grpc` - gRPC protocol. Only applicable to web processes. The change is applied asynchronously by syncing the ingress configuration.","example":"http","type":"string","enum":["http","grpc"]},"schedule":{"description":"Cron expression defining the execution schedule. Only applicable to cron processes.","example":"0 */6 * * *","type":"string","maxLength":100},"time_zone":{"description":"IANA time zone for the cron schedule. Only applicable to cron processes.","example":"America/New_York","type":"string","maxLength":100},"concurrency_policy":{"description":"How to handle a scheduled run when the previous run is still active. `Forbid` skips the new run until the current one finishes. `Replace` cancels the running job and starts a new one, which prevents a stuck run from blocking the schedule. Only applicable to cron processes.","example":"Forbid","type":"string","enum":["Forbid","Replace"]},"active_deadline_seconds":{"description":"Maximum run time in seconds. For cron processes, each scheduled run is terminated when it runs longer than this. Send 0 to turn off an existing limit. For job processes, the job is stopped and the deployment fails when the job runs longer than this. A job is also stopped when the deployment reaches its overall time limit (30 minutes by default). Send 0 to go back to the default of 600 seconds. Ignored for web and worker processes.","example":3600,"type":"integer","minimum":0,"maximum":9007199254740991},"job_start_policy":{"description":"When the job process should run relative to deployments. `beforeDeployment` - run after the build and before the new version of the other processes rolls out. If the job fails, the deployment fails and the running processes stay on the previous version. `afterSuccessDeployment` - run after a successful deployment. `afterFailedDeployment` - run after a failed deployment. Only applicable to job processes.","example":"beforeDeployment","type":"string","enum":["beforeDeployment","afterSuccessDeployment","afterFailedDeployment"]},"liveness_probe":{"description":"Kubernetes liveness probe configuration. Only applicable to web processes.","type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"]},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"]}},{"type":"null"}]}}},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"]},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}}},"readiness_probe":{"description":"Kubernetes readiness probe configuration. Only applicable to web processes.","type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"]},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"]}},{"type":"null"}]}}},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"]},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}}}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the process","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the application this process belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":64,"description":"Unique key identifying the process within the application, derived from the Procfile entry name","example":"web"},"type":{"anyOf":[{"type":"string","enum":["web","worker","cron","job"]},{"type":"null"}],"description":"Process runtime type. `web` - HTTP server process that handles incoming web traffic. `worker` - background process that runs continuously. `cron` - scheduled process that runs at specified intervals. `job` - one-time process that runs to completion and then stops.","example":"web"},"display_name":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}],"description":"Human-readable name for the process shown in the dashboard","example":"Web Process"},"entrypoint":{"type":"string","maxLength":1024,"description":"Command used to start the process","example":"npm start"},"port":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}],"description":"Port number the process listens on for incoming connections","example":8080},"is_ingress_enabled":{"type":"boolean","description":"Whether external traffic routing is enabled for this process. Only applicable to web processes.","example":true},"ingress_protocol":{"anyOf":[{"type":"string","enum":["http","grpc"]},{"type":"null"}],"description":"Protocol used for ingress traffic. `http` - standard HTTP/HTTPS traffic. `grpc` - gRPC protocol. Only applicable to web processes.","example":"http"},"scaling_strategy":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Manual scaling type","enum":["manual"]},"config":{"type":"object","properties":{"instanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Number of instances to run","example":1}},"required":["instanceCount"],"additionalProperties":false,"description":"Manual scaling configuration"}},"required":["type","config"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","description":"Horizontal auto-scaling type","enum":["horizontal"]},"config":{"type":"object","properties":{"minInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Minimum number of instances","example":1},"maxInstanceCount":{"type":"integer","minimum":0,"maximum":50,"description":"Maximum number of instances","example":5},"targetCpuPercent":{"description":"Target CPU utilization percentage for autoscaling","example":70,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"targetMemoryPercent":{"description":"Target memory utilization percentage for autoscaling","example":80,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"scaleUpIntervalSeconds":{"description":"Cooldown period in seconds between scale-up events","example":60,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleUpIncrement":{"description":"Number of instances to add per scale-up event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"scaleDownIntervalSeconds":{"description":"Cooldown period in seconds between scale-down events","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":60000},{"type":"null"}]},"scaleDownIncrement":{"description":"Number of instances to remove per scale-down event","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]}},"required":["minInstanceCount","maxInstanceCount"],"additionalProperties":false,"description":"Horizontal auto-scaling configuration"}},"required":["type","config"],"additionalProperties":false}]},{"type":"null"}],"description":"Scaling configuration for the process","example":{"type":"manual","config":{"instanceCount":1}}},"resource_type_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the process resource type (machine size) assigned to this process. Use the List Process Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this process","example":"s1"},"cpu_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum CPU allocation in millicores","example":500},"memory_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum memory allocation in megabytes","example":512},"schedule":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Cron expression defining the execution schedule. Only applicable to cron processes.","example":"0 * * * *"},"time_zone":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"IANA time zone for the cron schedule. Only applicable to cron processes.","example":"America/New_York"},"concurrency_policy":{"anyOf":[{"type":"string","enum":["Forbid","Replace"]},{"type":"null"}],"description":"How to handle a scheduled run when the previous run is still active. `Forbid` skips the new run until the current one finishes. `Replace` cancels the running job and starts a new one, which prevents a stuck run from blocking the schedule. Defaults to `Forbid`. Only applicable to cron processes.","example":"Forbid"},"active_deadline_seconds":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum run time in seconds. For cron processes, each scheduled run is terminated when it runs longer than this, and null means no limit. For job processes, the job is stopped and the deployment fails when the job runs longer than this, and null means the default of 600 seconds. A job is also stopped when the deployment reaches its overall time limit (30 minutes by default). Not used for web and worker processes.","example":3600},"job_start_policy":{"anyOf":[{"type":"string","enum":["beforeDeployment","afterSuccessDeployment","afterFailedDeployment"]},{"type":"null"}],"description":"When the job process should run relative to deployments. `beforeDeployment` - run after the build and before the new version of the other processes rolls out. If the job fails, the deployment fails and the running processes stay on the previous version. `afterSuccessDeployment` - run after a successful deployment. `afterFailedDeployment` - run after a failed deployment. Only applicable to job processes.","example":"afterSuccessDeployment"},"liveness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes liveness probe configuration. Used to detect when a process is stuck and needs to be restarted. Only populated for web processes.","example":{"httpGet":{"path":"/health","port":8080,"scheme":"HTTP"}}},"readiness_probe":{"anyOf":[{"type":"object","properties":{"exec":{"description":"Exec-based probe - runs a command inside the container","anyOf":[{"type":"object","properties":{"command":{"type":"array","items":{"type":"string"},"description":"Command to execute inside the container"}},"required":["command"],"additionalProperties":false},{"type":"null"}]},"httpGet":{"description":"HTTP GET probe - performs an HTTP GET request","anyOf":[{"type":"object","properties":{"path":{"description":"Path to access on the HTTP server","example":"/health","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"description":"Port number to access on the container","example":8080,"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"scheme":{"description":"Scheme to use for connecting to the host. `HTTP` or `HTTPS`","example":"HTTP","anyOf":[{"type":"string","enum":["HTTP","HTTPS"]},{"type":"null"}]},"httpHeaders":{"description":"Custom headers to set in the request","anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Header name","example":"X-Custom-Header"},"value":{"type":"string","description":"Header value","example":"custom-value"}},"required":["name","value"],"additionalProperties":false}},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"tcpSocket":{"description":"TCP socket probe - checks if a TCP port is open","anyOf":[{"type":"object","properties":{"host":{"description":"Host name to connect to","anyOf":[{"type":"string"},{"type":"null"}]},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number to connect to","example":8080}},"required":["port"],"additionalProperties":false},{"type":"null"}]},"initialDelaySeconds":{"description":"Seconds after the container starts before the probe is initiated","example":0,"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"periodSeconds":{"description":"How often in seconds to perform the probe","example":10,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"timeoutSeconds":{"description":"Seconds after which the probe times out","example":120,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful","example":1,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed","example":3,"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}],"description":"Kubernetes readiness probe configuration. Used to determine when a process is ready to receive traffic. Only populated for web processes.","example":{"httpGet":{"path":"/ready","port":8080,"scheme":"HTTP"}}},"internal_hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Internal Kubernetes DNS hostname for service-to-service communication within the cluster","example":"my-app-web.my-app-abc123.svc.cluster.local"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the process was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","key","type","display_name","entrypoint","port","is_ingress_enabled","ingress_protocol","scaling_strategy","resource_type_id","resource_type_name","cpu_limit","memory_limit","schedule","time_zone","concurrency_policy","active_deadline_seconds","job_start_policy","liveness_probe","readiness_probe","internal_hostname","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteProcessV3","summary":"Delete process","tags":["Applications"],"description":"Delete a non-web process from an application. The web process cannot be deleted. Deletion is performed asynchronously - the process is queued for removal and will be fully deleted after the next deployment.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Deletion result message","example":"Process is being deleted"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/trigger":{"post":{"operationId":"triggerProcessCronV3","summary":"Trigger cron job","tags":["Applications"],"description":"Manually trigger an immediate execution of a cron process. This creates a one-off run outside of the regular cron schedule. The process must be of type `cron`.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Trigger result message","example":"Cron job triggered"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/terminal":{"get":{"operationId":"openTerminalV3","summary":"Open terminal session (WebSocket)","tags":["Applications"],"description":"Open an interactive terminal (shell) session to a running application process.\n\n**This is a WebSocket endpoint.** Connect using a WebSocket client with the `Upgrade: websocket` header. Standard HTTP requests return a `426 Upgrade Required` response.\n\n### Connection\n\n```\nwscat -c \"wss://api.sevalla.com/v3/applications/{id}/processes/{process_id}/terminal?shell=bash&cols=120&rows=40\" -H \"Authorization: Bearer <api_key>\"\n```\n\nAuthentication runs before the WebSocket upgrade - invalid credentials are rejected with a standard HTTP 401/403 response.\n\n### Communication\n\nOnce connected, the WebSocket streams stdin/stdout bidirectionally to a shell running inside the container. Send text messages as shell input and receive command output as text messages.\n\n### Terminal size\n\nThe terminal starts at the size given by the `cols` and `rows` query parameters, or 80x24 without them. To resize it, send a **binary** message holding the UTF-8 encoded JSON `{\"type\":\"resize\",\"cols\":120,\"rows\":40}`. Sizes are clamped to 2-500 columns and 2-200 rows, and a resize message without integer `cols` and `rows` is ignored. Resize messages never reach the shell. Text messages are always shell input, even when they look like a resize message, and any other binary message is passed to the shell as input as well.\n\n### Environment\n\nThe shell starts with `TERM=xterm-256color` and `COLORTERM=truecolor`. It also gets `LANG=C.UTF-8`, unless the container already sets `LANG` or an `LC_*` variable.\n\n### Output\n\nOutput arrives as UTF-8 text messages. A character that the container writes in two pieces is always sent whole, never as a replacement character.\n\n### Keepalive\n\nThe server sends a WebSocket ping every 25 seconds, which standard WebSocket clients answer with a pong on their own. This keeps an idle session open through proxies and load balancers. A connection that leaves two pings in a row unanswered is closed, and so is a session that has had no input and no output for 8 hours.\n\n### Disconnects\n\nA closed connection is not resumed, and the next connection starts a new shell. Run long jobs under `nohup`, or in `tmux` or `screen` when the image has them, so you can find them again after a disconnect.\n\n### Close codes\n\n- `4000` - Application or process not found\n- `4001` - No running pod available to connect to\n- `4002` - Shell stream error\n- `4003` - Shell stream closed normally\n- `4004` - No input and no output for 8 hours\n- `4005` - Failed to connect to the pod\n- `4300` - Unexpected server error","parameters":[{"schema":{"default":"sh","type":"string","enum":["sh","bash","dash","ksh","zsh","csh","tcsh"]},"in":"query","name":"shell","required":false,"description":"Shell to use for the terminal session. `sh` - Bourne shell (default). `bash` - Bourne Again Shell. `dash` - Debian Almquist Shell. `ksh` - KornShell. `zsh` - Z Shell. `csh` - C Shell. `tcsh` - TENEX C Shell."},{"schema":{"example":"120","type":"string"},"in":"query","name":"cols","required":false,"description":"Width of the terminal in columns when the session starts, as an integer from 2 to 500. Values outside that range are clamped to it, and a missing or invalid value means 80. Send a resize message to change it later."},{"schema":{"example":"40","type":"string"},"in":"query","name":"rows","required":false,"description":"Height of the terminal in rows when the session starts, as an integer from 2 to 200. Values outside that range are clamped to it, and a missing or invalid value means 24. Send a resize message to change it later."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"426":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message indicating WebSocket upgrade is required","example":"Upgrade Required"},"status":{"type":"number","description":"HTTP status code","example":426,"enum":[426]},"data":{"type":"object","properties":{},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/exec":{"post":{"operationId":"execProcessCommandV3","summary":"Run a command in a process","tags":["Applications"],"description":"Run a single command inside a running application process (container) and return its output. This is a non-interactive alternative to the WebSocket terminal: one command runs, and its stdout, stderr, and exit code are returned. The command runs directly without a shell, so pipes, redirects, and command chaining do not apply.\n\nThis endpoint requires at least read access to the application. A key with only read access can run read-only commands (such as `ls`, `cat`, `env`, `ps`, `grep`); a request to run any other command is rejected with a 403. A key with write access to the application can run any command. Note that the read-only restriction is a convenience to prevent accidental changes, not a security sandbox: read-only commands can still read environment variables and files inside the container.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"command":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string"},"description":"Command to run, given as an argument vector where the first element is the binary and the rest are its arguments (for example `[\"ls\", \"-la\", \"/app\"]`). The command is run directly, not through a shell, so shell features like pipes, redirects, globbing, and chaining with `;` or `&&` are not available. Run those as separate calls instead. API keys with only read access to the application can run read-only commands (such as `ls`, `cat`, `env`, `ps`, `grep`); keys with write access can run any command.","example":["ls","-la","/app"]},"timeout":{"default":15,"description":"Maximum time in seconds to wait for the command to finish before it is aborted. Defaults to 15 seconds.","example":15,"type":"integer","minimum":1,"maximum":60}},"required":["command"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"stdout":{"type":"string","description":"Standard output produced by the command.","example":"total 8\ndrwxr-xr-x 2 app app 4096 Jan 1 00:00 .\n"},"stderr":{"type":"string","description":"Standard error produced by the command.","example":""},"exit_code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Exit code returned by the command. `0` means success; any other value means the command failed.","example":0}},"required":["stdout","stderr","exit_code"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/metrics/cpu-usage":{"get":{"operationId":"getProcessCpuUsageV3","summary":"Get process CPU usage","tags":["Applications"],"description":"Retrieve a time series of CPU usage for a specific application process. Returns data points at the specified interval showing actual CPU consumption in cores.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/metrics/cpu-limit":{"get":{"operationId":"getProcessCpuLimitV3","summary":"Get process CPU limit","tags":["Applications"],"description":"Retrieve a time series of CPU limits for a specific application process. Returns data points at the specified interval showing the configured CPU limit in cores.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/metrics/memory-usage":{"get":{"operationId":"getProcessMemoryUsageV3","summary":"Get process memory usage","tags":["Applications"],"description":"Retrieve a time series of memory usage for a specific application process. Returns data points at the specified interval showing actual memory consumption in bytes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/metrics/memory-limit":{"get":{"operationId":"getProcessMemoryLimitV3","summary":"Get process memory limit","tags":["Applications"],"description":"Retrieve a time series of memory limits for a specific application process. Returns data points at the specified interval showing the configured memory limit in bytes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/metrics/instance-count":{"get":{"operationId":"getProcessInstanceCountV3","summary":"Get process instance count","tags":["Applications"],"description":"Retrieve a time series of running instance counts for a specific application process. Returns data points at the specified interval showing the number of active replicas.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/processes/{process_id}/metrics/exit-codes":{"get":{"operationId":"getProcessExitCodesV3","summary":"Get process exit codes","tags":["Applications"],"description":"Retrieve exit codes for a specific application process within a time range. Returns each exit code event with a timestamp and a human-readable description when available.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"process_id","required":true,"description":"Process identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"string","description":"Exit code value","example":"137"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable description of the exit code, or null if the code is not recognized. Common codes: 0 - completed normally, 1 - error, 137 - OOMKilled (SIGKILL), 143 - terminated (SIGTERM)","example":"OOMKilled (SIGKILL). The process was killed because it exceeded its memory limit."}},"required":["time","value","description"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/env-vars":{"get":{"operationId":"listEnvironmentVariablesV3","summary":"List environment variables","tags":["Applications"],"description":"Retrieve a paginated list of all app-level environment variables for an application. Values are returned decrypted. Variables are ordered by creation time.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application this environment variable belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable. Must be unique within the application scope.","example":"DATABASE_URL"},"value":{"type":"string","maxLength":32768,"description":"Value of the environment variable. Stored encrypted at rest.","example":"postgres://user:pass@host:5432/db"},"is_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available at runtime. Defaults to true when created.","example":true},"is_buildtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available during the build step. Defaults to true when created.","example":true},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","key","value","is_runtime","is_buildtime","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createEnvironmentVariableV3","summary":"Create environment variable","tags":["Applications"],"description":"Create a new app-level environment variable for an application. The value is encrypted before storage. A deployment is required for the new variable to take effect.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable. Must be unique within the application scope.","example":"API_BASE_URL"},"value":{"type":"string","maxLength":32768,"description":"Value of the environment variable. Will be stored encrypted at rest.","example":"https://api.example.com"},"is_runtime":{"default":true,"description":"Whether this variable is available at runtime. Defaults to true.","example":true,"type":"boolean"},"is_buildtime":{"default":true,"description":"Whether this variable is available during the build step. Defaults to true.","example":true,"type":"boolean"}},"required":["key","value"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application this environment variable belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable. Must be unique within the application scope.","example":"DATABASE_URL"},"value":{"type":"string","maxLength":32768,"description":"Value of the environment variable. Stored encrypted at rest.","example":"postgres://user:pass@host:5432/db"},"is_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available at runtime. Defaults to true when created.","example":true},"is_buildtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available during the build step. Defaults to true when created.","example":true},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","key","value","is_runtime","is_buildtime","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/env-vars/{env_var_id}":{"put":{"operationId":"updateEnvironmentVariableV3","summary":"Update environment variable","tags":["Applications"],"description":"Update an existing app-level environment variable. You can change the key, value, or runtime/buildtime flags. A deployment is required for changes to take effect.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"description":"New name for the environment variable","example":"API_BASE_URL","type":"string","minLength":1,"maxLength":255},"value":{"description":"New value for the environment variable. Will be stored encrypted at rest.","example":"https://api.example.com","type":"string","maxLength":32768},"is_runtime":{"description":"Whether this variable is available at runtime","example":true,"type":"boolean"},"is_buildtime":{"description":"Whether this variable is available during the build step","example":true,"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"env_var_id","required":true,"description":"Environment variable identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application this environment variable belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable. Must be unique within the application scope.","example":"DATABASE_URL"},"value":{"type":"string","maxLength":32768,"description":"Value of the environment variable. Stored encrypted at rest.","example":"postgres://user:pass@host:5432/db"},"is_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available at runtime. Defaults to true when created.","example":true},"is_buildtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available during the build step. Defaults to true when created.","example":true},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","key","value","is_runtime","is_buildtime","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteEnvironmentVariableV3","summary":"Delete environment variable","tags":["Applications"],"description":"Delete an app-level environment variable. A deployment is required for the removal to take effect.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"env_var_id","required":true,"description":"Environment variable identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Deletion result message","example":"Environment variable deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/deployment-hook":{"post":{"operationId":"enableDeploymentHookV3","summary":"Enable deployment hook","tags":["Applications"],"description":"Enable the deployment hook for an application. Returns a unique URL that can be called via HTTP POST to trigger a deployment. If the hook is already enabled, the existing URL is returned.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Full deployment hook URL to trigger deployments via HTTP POST","example":"https://hook.sevalla.com/apps/fb5e5168-4281-4bec-94c5-0d1584e9e657/deploy/abcdefghijkl"}},"required":["url"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"disableDeploymentHookV3","summary":"Disable deployment hook","tags":["Applications"],"description":"Disable the deployment hook for an application. The existing hook URL will stop working immediately. A new secret is generated if the hook is re-enabled later.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"204":{"description":"Deployment hook disabled successfully"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"put":{"operationId":"regenerateDeploymentHookV3","summary":"Regenerate deployment hook","tags":["Applications"],"description":"Regenerate the deployment hook secret for an application. The previous hook URL will stop working immediately and a new URL is returned. Use this if the current hook secret has been compromised.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"New deployment hook URL with a freshly generated secret","example":"https://hook.sevalla.com/apps/fb5e5168-4281-4bec-94c5-0d1584e9e657/deploy/abcdefghijkl"}},"required":["url"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"get":{"operationId":"getDeploymentHookV3","summary":"Get deployment hook URL","tags":["Applications"],"description":"Retrieve the deployment hook URL for an application. Returns 404 if no deployment hook is currently enabled.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Full deployment hook URL to trigger deployments via HTTP POST","example":"https://hook.sevalla.com/apps/fb5e5168-4281-4bec-94c5-0d1584e9e657/deploy/abcdefghijkl"}},"required":["url"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/domains":{"get":{"operationId":"listApplicationDomainsV3","summary":"List application domains","tags":["Applications"],"description":"Retrieve a paginated list of all domains (both system and custom) associated with an application. System domains are assigned automatically, while custom domains are added by users.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"addApplicationDomainV3","summary":"Add application domain","tags":["Applications"],"description":"Add a custom domain to an application. After adding, configure your DNS records as indicated in the response to complete domain verification. The domain status will transition from `verification` to `pointing` to `active` as DNS propagates.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain_name":{"type":"string","minLength":1,"description":"The custom domain name to add to the application","example":"app.example.com"},"is_wildcard":{"description":"Whether this should be a wildcard domain that matches all subdomains","example":false,"type":"boolean"},"custom_ssl_cert":{"description":"Custom SSL certificate in PEM format. When provided, the platform uses this certificate instead of auto-provisioning one.","example":"-----BEGIN CERTIFICATE-----...","type":"string"},"custom_ssl_key":{"description":"Private key for the custom SSL certificate in PEM format. Required when custom_ssl_cert is provided.","example":"-----BEGIN PRIVATE KEY-----...","type":"string"}},"required":["domain_name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/domains/{domain_id}":{"get":{"operationId":"getApplicationDomainV3","summary":"Get application domain","tags":["Applications"],"description":"Retrieve the details of a specific domain associated with an application, including its verification status, DNS records, and configuration.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteApplicationDomainV3","summary":"Delete application domain","tags":["Applications"],"description":"Remove a custom domain from an application. System domains cannot be deleted - use the toggle endpoint to disable them instead. This action cannot be undone.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateApplicationDomainV3","summary":"Update application system domain","tags":["Applications"],"description":"Update the subdomain name of a system domain. Only applies to system domains - use the add/delete endpoints to manage custom domains.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"New subdomain name for the system domain","example":"my-app"}},"required":["name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/domains/{domain_id}/refresh-status":{"post":{"operationId":"refreshApplicationDomainStatusV3","summary":"Refresh application domain status","tags":["Applications"],"description":"Trigger a re-check of the domain verification and DNS pointing status. Use this after updating your DNS records to speed up the verification process.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain status refresh initiated"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/domains/{domain_id}/set-primary":{"post":{"operationId":"setApplicationPrimaryDomainV3","summary":"Set primary application domain","tags":["Applications"],"description":"Set a domain as the primary domain for the application. The primary domain is used for canonical URLs and redirects. Only one domain can be primary at a time - the previously primary domain is automatically demoted.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain set as primary"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/domains/{domain_id}/toggle":{"post":{"operationId":"toggleApplicationSystemDomainV3","summary":"Toggle application system domain","tags":["Applications"],"description":"Enable or disable a system domain for the application. When disabled, the system domain stops serving traffic. Only applies to system domains - custom domains cannot be toggled.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"System domain toggled"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/runtime-logs":{"get":{"operationId":"getApplicationRuntimeLogsV3","summary":"Get application runtime logs","tags":["Applications"],"description":"Retrieve runtime logs for an application. These are logs produced by the running application processes (stdout/stderr). Returns the most recent `limit` entries in the time range, oldest first by default (set `order=desc` for newest first). Use `search` for a case-insensitive text match on the message, and `filters` for filtering by severity, message, tags, or attributes.","parameters":[{"schema":{"example":"2026-02-22T14:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":false,"description":"Start of the time range in ISO 8601 format. Defaults to 1 hour before `to` if not provided."},{"schema":{"example":"2026-02-22T15:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":false,"description":"End of the time range in ISO 8601 format. Defaults to now if not provided."},{"schema":{"example":"connection refused","type":"string","minLength":1,"maxLength":500},"in":"query","name":"search","required":false,"description":"Case-insensitive substring match on the log message. Only entries whose message contains this text are returned. Can be combined with `filters`."},{"schema":{"example":"[{\"key\":\"severity\",\"operator\":\"EQUALS\",\"value\":\"ERROR\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects. All filters must match (they are combined with AND). Each filter has a `key`, an `operator`, and a `value` (or `values` for `IS_IN` and `IS_NOT_IN`).\n\nSupported keys: `severity`, `message`, `id`, `tags.<name>` for a tag value, and `attributes.<name>` for an attribute value (use dots for nested attribute fields, e.g. `attributes.request.path`).\n\nSupported operators: `EQUALS`, `DOES_NOT_EQUAL`, `CONTAINS`, `DOES_NOT_CONTAIN`, `STARTS_WITH`, `DOES_NOT_START_WITH`, `ENDS_WITH`, `DOES_NOT_END_WITH`, `GREATER_THAN_OR_EQUALS` and `LESS_THAN_OR_EQUALS` (numeric comparison), `IS_IN` and `IS_NOT_IN` (match against a list in `values`). Text operators are case-sensitive - use `search` for a case-insensitive message match. An unknown key or operator returns a 400.\n\nExample: [{\"key\":\"severity\",\"operator\":\"IS_IN\",\"values\":[\"ERROR\",\"WARN\"]},{\"key\":\"message\",\"operator\":\"CONTAINS\",\"value\":\"timeout\"}]"},{"schema":{"default":"asc","example":"desc","type":"string","enum":["asc","desc"]},"in":"query","name":"order","required":false,"description":"Sort order of the returned entries. `asc` - oldest first (default), `desc` - newest first. The order does not change which entries are returned: when more entries match than `limit`, the most recent ones are always returned."},{"schema":{"default":1000,"example":1000,"type":"integer","minimum":1,"maximum":5000},"in":"query","name":"limit","required":false,"description":"Maximum number of log entries to return (1-5000). When more entries match, the most recent ones in the time range are returned."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the log entry","example":"abc123"},"message":{"type":"string","description":"Log message content","example":"Server started on port 3000"},"service":{"type":"string","description":"Service that produced the log entry, such as APP_RUNTIME, APP_ACCESS, APP_DEPLOYMENT, SS_DEPLOYMENT, or SS_ACCESS","example":"APP_RUNTIME"},"severity":{"type":"string","description":"Log severity level such as INFO, WARN, ERROR, or DEBUG","example":"INFO"},"timestamp":{"type":"string","description":"Formatted timestamp of the log entry","example":"2026-02-22 15:30:00.000"},"tags":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Key-value pairs of tags associated with the log entry, such as container name or resource ID","example":{"idApp":"fb5e5168-4281-4bec-94c5-0d1584e9e657","container":"web"}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Additional structured attributes attached to the log entry","example":{}},"unix_timestamp":{"type":"number","description":"Unix timestamp of the log entry in microseconds","example":1740236400000000}},"required":["id","message","service","severity","timestamp","tags","attributes","unix_timestamp"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/access-logs":{"get":{"operationId":"getApplicationAccessLogsV3","summary":"Get application access logs","tags":["Applications"],"description":"Retrieve HTTP access logs for an application. These are logs of incoming requests handled by the application. Returns the most recent `limit` entries in the time range, oldest first by default (set `order=desc` for newest first). Use `search` for a case-insensitive text match on the message, and `filters` for filtering by severity, message, tags, or attributes.","parameters":[{"schema":{"example":"2026-02-22T14:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":false,"description":"Start of the time range in ISO 8601 format. Defaults to 1 hour before `to` if not provided."},{"schema":{"example":"2026-02-22T15:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":false,"description":"End of the time range in ISO 8601 format. Defaults to now if not provided."},{"schema":{"example":"connection refused","type":"string","minLength":1,"maxLength":500},"in":"query","name":"search","required":false,"description":"Case-insensitive substring match on the log message. Only entries whose message contains this text are returned. Can be combined with `filters`."},{"schema":{"example":"[{\"key\":\"severity\",\"operator\":\"EQUALS\",\"value\":\"ERROR\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects. All filters must match (they are combined with AND). Each filter has a `key`, an `operator`, and a `value` (or `values` for `IS_IN` and `IS_NOT_IN`).\n\nSupported keys: `severity`, `message`, `id`, `tags.<name>` for a tag value, and `attributes.<name>` for an attribute value (use dots for nested attribute fields, e.g. `attributes.request.path`).\n\nSupported operators: `EQUALS`, `DOES_NOT_EQUAL`, `CONTAINS`, `DOES_NOT_CONTAIN`, `STARTS_WITH`, `DOES_NOT_START_WITH`, `ENDS_WITH`, `DOES_NOT_END_WITH`, `GREATER_THAN_OR_EQUALS` and `LESS_THAN_OR_EQUALS` (numeric comparison), `IS_IN` and `IS_NOT_IN` (match against a list in `values`). Text operators are case-sensitive - use `search` for a case-insensitive message match. An unknown key or operator returns a 400.\n\nExample: [{\"key\":\"severity\",\"operator\":\"IS_IN\",\"values\":[\"ERROR\",\"WARN\"]},{\"key\":\"message\",\"operator\":\"CONTAINS\",\"value\":\"timeout\"}]"},{"schema":{"default":"asc","example":"desc","type":"string","enum":["asc","desc"]},"in":"query","name":"order","required":false,"description":"Sort order of the returned entries. `asc` - oldest first (default), `desc` - newest first. The order does not change which entries are returned: when more entries match than `limit`, the most recent ones are always returned."},{"schema":{"default":1000,"example":1000,"type":"integer","minimum":1,"maximum":5000},"in":"query","name":"limit","required":false,"description":"Maximum number of log entries to return (1-5000). When more entries match, the most recent ones in the time range are returned."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the log entry","example":"abc123"},"message":{"type":"string","description":"Log message content","example":"Server started on port 3000"},"service":{"type":"string","description":"Service that produced the log entry, such as APP_RUNTIME, APP_ACCESS, APP_DEPLOYMENT, SS_DEPLOYMENT, or SS_ACCESS","example":"APP_RUNTIME"},"severity":{"type":"string","description":"Log severity level such as INFO, WARN, ERROR, or DEBUG","example":"INFO"},"timestamp":{"type":"string","description":"Formatted timestamp of the log entry","example":"2026-02-22 15:30:00.000"},"tags":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Key-value pairs of tags associated with the log entry, such as container name or resource ID","example":{"idApp":"fb5e5168-4281-4bec-94c5-0d1584e9e657","container":"web"}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Additional structured attributes attached to the log entry","example":{}},"unix_timestamp":{"type":"number","description":"Unix timestamp of the log entry in microseconds","example":1740236400000000}},"required":["id","message","service","severity","timestamp","tags","attributes","unix_timestamp"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/cdn/toggle":{"post":{"operationId":"toggleApplicationCdnV3","summary":"Toggle CDN","tags":["Applications"],"description":"Toggle CDN on or off for an application. If CDN is currently enabled, it will be disabled, and vice versa. Returns the new CDN status after toggling.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_turned_on":{"type":"boolean","description":"Whether CDN is currently enabled for the application","example":true}},"required":["is_turned_on"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/edge-cache/toggle":{"post":{"operationId":"toggleApplicationEdgeCacheV3","summary":"Toggle edge cache","tags":["Applications"],"description":"Toggle edge caching on or off for an application. If edge caching is currently enabled, it will be disabled, and vice versa. Returns the new edge caching status after toggling.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_turned_on":{"type":"boolean","description":"Whether edge caching is currently enabled for the application","example":true}},"required":["is_turned_on"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/ip-restriction":{"get":{"operationId":"getApplicationIpRestrictionV3","summary":"Get IP restriction","tags":["Applications"],"description":"Retrieve the current IP restriction configuration for an application. Returns the restriction type, whether it is active, and the list of IP addresses or CIDR ranges. If no restriction has been configured, returns a default state with type `deny`, disabled, and an empty IP list.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["allow","deny"],"description":"Restriction type. `allow` - only listed IPs can access. `deny` - listed IPs are blocked.","example":"deny"},"is_enabled":{"type":"boolean","description":"Whether the IP restriction is currently active","example":false},"ip_list":{"type":"array","items":{"type":"string"},"description":"List of IP addresses or CIDR ranges included in the restriction","example":["203.0.113.0/24","198.51.100.1"]}},"required":["type","is_enabled","ip_list"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"put":{"operationId":"updateApplicationIpRestrictionV3","summary":"Update IP restriction","tags":["Applications"],"description":"Update the IP restriction configuration for an application. Sets the restriction type (allow or deny), enables or disables it, and updates the list of IP addresses or CIDR ranges. When type is `allow`, only the listed IPs can access the application. When type is `deny`, the listed IPs are blocked. Returns the updated restriction state.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["allow","deny"],"description":"Restriction type. `allow` - only listed IPs can access the application. `deny` - listed IPs are blocked from accessing the application.","example":"allow"},"is_enabled":{"type":"boolean","description":"Whether the IP restriction should be active","example":true},"ip_list":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":45},"description":"List of IP addresses or CIDR ranges to include in the restriction","example":["203.0.113.0/24","198.51.100.1"]}},"required":["type","is_enabled","ip_list"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["allow","deny"],"description":"Restriction type. `allow` - only listed IPs can access. `deny` - listed IPs are blocked.","example":"allow"},"is_enabled":{"type":"boolean","description":"Whether the IP restriction is currently active","example":true},"ip_list":{"type":"array","items":{"type":"string"},"description":"List of IP addresses or CIDR ranges included in the restriction","example":["203.0.113.0/24","198.51.100.1"]}},"required":["type","is_enabled","ip_list"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/egress-ips":{"get":{"operationId":"getApplicationEgressIpsV3","summary":"Get egress IPs","tags":["Applications"],"description":"Retrieve the IP addresses that outbound connections from an application can originate from, for example to allow the application through a firewall in front of an external database or API. The result depends on the cluster the application runs on.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"egress_ips":{"type":"array","items":{"type":"string"},"description":"IP addresses or CIDR ranges that outbound traffic from the application can originate from. On Google Cloud clusters this lists the IPv4 ranges Google publishes for the cluster region, and traffic can come from any address in them. On Oracle Cloud clusters this is the fixed public IP address of the NAT gateway the application egresses through.","example":["203.0.113.7"]}},"required":["egress_ips"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/rate-limit":{"get":{"operationId":"getApplicationRateLimitV3","summary":"Get rate limit","tags":["Applications"],"description":"Retrieve the current rate limiting configuration for an application. Rate limiting restricts each client IP to 100 requests per minute per hostname and applies the configured action when the limit is exceeded. If rate limiting has never been configured, returns the default state: disabled with the `challenge` action.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting is currently active","example":false},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action applied when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"put":{"operationId":"updateApplicationRateLimitV3","summary":"Update rate limit","tags":["Applications"],"description":"Update the rate limiting configuration for an application. Rate limiting restricts each client IP to 100 requests per minute per hostname across the application domains. When a client exceeds the limit, the configured action is applied: `challenge` requires the visitor to pass a managed challenge for 5 minutes, `throttle` blocks requests only while the rate stays above the limit, and `ban` blocks the client IP for 5 minutes. Changes are synced to the edge network as part of the request. Returns the updated rate limit state.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting should be active","example":true},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action to apply when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting is currently active","example":true},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action applied when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/maintenance-mode":{"get":{"operationId":"getApplicationMaintenanceModeV3","summary":"Get maintenance mode","tags":["Applications"],"description":"Retrieve the maintenance mode configuration for an application. Returns whether maintenance mode is active and the URL of the custom maintenance page, if one is set. If maintenance mode has never been configured, returns a default state with `is_enabled` false and `page_url` null.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether maintenance mode is currently active. When true, every request to every domain of the application receives the maintenance page with status 503 instead of reaching the application.","example":false},"page_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"HTTPS URL of a page to serve as the maintenance page, for example a Sevalla static site. The edge fetches the page body and serves it on every domain of the application with status 503, so visitors never see this URL. When null the default Sevalla maintenance page is served. Content changes on the page take up to 60 seconds to show.","example":"https://status.example.com"}},"required":["is_enabled","page_url"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"put":{"operationId":"updateApplicationMaintenanceModeV3","summary":"Update maintenance mode","tags":["Applications"],"description":"Turn maintenance mode on or off for an application and optionally set a custom maintenance page URL. While enabled, every request to every domain of the application gets the maintenance page with status 503 and a Retry-After header instead of reaching the application. There are no path, method or visitor exceptions, and IP restrictions still apply first. The application keeps running and deployments still work. The change is written to the edge synchronously but can take up to 5 minutes to reach every location. Returns the updated state.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether maintenance mode should be active. When true, every request to every domain of the application receives the maintenance page with status 503. The application keeps running and can still be deployed while in maintenance mode.","example":true},"page_url":{"description":"HTTPS URL of a page to serve as the maintenance page, for example a Sevalla static site. The edge fetches the page body and serves it on every domain of the application with status 503, so visitors never see this URL. When null the default Sevalla maintenance page is served. Content changes on the page take up to 60 seconds to show. Must start with https:// and be at most 2048 characters. This is a full replace: when omitted or null, any previously set page URL is cleared and the default page is served.","example":"https://status.example.com","anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]}},"required":["is_enabled"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether maintenance mode is currently active. When true, every request to every domain of the application receives the maintenance page with status 503 instead of reaching the application.","example":false},"page_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"HTTPS URL of a page to serve as the maintenance page, for example a Sevalla static site. The edge fetches the page body and serves it on every domain of the application with status 503, so visitors never see this URL. When null the default Sevalla maintenance page is served. Content changes on the page take up to 60 seconds to show.","example":"https://status.example.com"}},"required":["is_enabled","page_url"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/purge-cache":{"post":{"operationId":"purgeApplicationCacheV3","summary":"Purge edge cache","tags":["Applications"],"description":"Purge the edge cache for an application, removing all cached content. Use this when you need cached resources to be refreshed immediately without waiting for the cache TTL to expire.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Cache purged successfully"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/tcp-proxies":{"get":{"operationId":"listApplicationTcpProxiesV3","summary":"List TCP proxies","tags":["Applications"],"description":"Retrieve a paginated list of public TCP proxies for an application. TCP proxies expose an internal container port on a public hostname and port, allowing direct TCP connections from the internet.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the TCP proxy","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application this TCP proxy belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"process_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the process this TCP proxy is attached to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Internal container port that the TCP proxy forwards traffic to","example":8080},"external_port":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Public port to connect to. The port can change once when the proxy moves behind the external proxy, so always read it together with `hostname` instead of storing it.","example":51744},"hostname":{"type":"string","description":"Public hostname to connect to. The hostname can change once when the proxy moves behind the external proxy, so always read it together with `external_port` instead of storing it.","example":"my-app-1a2b3-x9k2q.ext.sevalla.app"},"status":{"type":"string","enum":["creating","ready","failed","deleting"],"description":"Current status of the TCP proxy. `creating` - being provisioned. `ready` - active and forwarding traffic. `failed` - provisioning failed. `deleting` - being removed.","example":"ready"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the TCP proxy was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the TCP proxy was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","process_id","port","external_port","hostname","status","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createApplicationTcpProxyV3","summary":"Create TCP proxy","tags":["Applications"],"description":"Create a public TCP proxy for an application process. The proxy gets its own public hostname and port, allowing direct TCP connections from the internet to the specified container port. The proxy is provisioned asynchronously after creation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"process_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the process to attach the TCP proxy to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Internal container port to expose via the TCP proxy","example":3306}},"required":["process_id","port"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the TCP proxy","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application this TCP proxy belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"process_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the process this TCP proxy is attached to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Internal container port that the TCP proxy forwards traffic to","example":8080},"external_port":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Public port to connect to. The port can change once when the proxy moves behind the external proxy, so always read it together with `hostname` instead of storing it.","example":51744},"hostname":{"type":"string","description":"Public hostname to connect to. The hostname can change once when the proxy moves behind the external proxy, so always read it together with `external_port` instead of storing it.","example":"my-app-1a2b3-x9k2q.ext.sevalla.app"},"status":{"type":"string","enum":["creating","ready","failed","deleting"],"description":"Current status of the TCP proxy. `creating` - being provisioned. `ready` - active and forwarding traffic. `failed` - provisioning failed. `deleting` - being removed.","example":"ready"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the TCP proxy was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the TCP proxy was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","process_id","port","external_port","hostname","status","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/tcp-proxies/{tcp_proxy_id}":{"delete":{"operationId":"deleteApplicationTcpProxyV3","summary":"Delete TCP proxy","tags":["Applications"],"description":"Delete a public TCP proxy from an application. The external port and hostname are released immediately. The port configuration is synchronized asynchronously after deletion.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"tcp_proxy_id","required":true,"description":"TCP proxy identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Deletion result message","example":"TCP proxy deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/private-ports":{"get":{"operationId":"listApplicationPrivatePortsV3","summary":"List private ports","tags":["Applications"],"description":"Retrieve a paginated list of private ports for an application. Private ports expose internal container ports for cluster-internal communication between services, without any external network access.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the private port","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application this private port belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"process_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the process this private port is attached to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Internal container port exposed for cluster-internal communication","example":3000},"status":{"type":"string","enum":["creating","ready","failed","deleting"],"description":"Current status of the private port. `creating` - being provisioned. `ready` - active and accessible within the cluster. `failed` - provisioning failed. `deleting` - being removed.","example":"ready"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the private port was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the private port was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","process_id","port","status","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createApplicationPrivatePortV3","summary":"Create private port","tags":["Applications"],"description":"Expose a private port on an application process. Private ports allow cluster-internal communication between services without external network access. The port is provisioned asynchronously after creation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"process_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the process to expose the private port on","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Internal container port to expose for cluster-internal access","example":3306}},"required":["process_id","port"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the private port","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application this private port belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"process_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the process this private port is attached to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Internal container port exposed for cluster-internal communication","example":3000},"status":{"type":"string","enum":["creating","ready","failed","deleting"],"description":"Current status of the private port. `creating` - being provisioned. `ready` - active and accessible within the cluster. `failed` - provisioning failed. `deleting` - being removed.","example":"ready"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the private port was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the private port was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","app_id","process_id","port","status","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/private-ports/{private_port_id}":{"delete":{"operationId":"deleteApplicationPrivatePortV3","summary":"Delete private port","tags":["Applications"],"description":"Remove a private port from an application. The port is no longer accessible for cluster-internal communication after deletion. The port configuration is synchronized asynchronously.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"private_port_id","required":true,"description":"Private port identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Deletion result message","example":"TCP proxy deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/internal-connections":{"get":{"operationId":"listApplicationInternalConnectionsV3","summary":"List internal connections","tags":["Applications"],"description":"Retrieve all internal connections of an application. Internal connections allow services within the same cluster to communicate with each other. Returns connections where this application is either the source or the target, including connections created from a database.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Internal connection identifier","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"source_id":{"type":"string","description":"Identifier of the source resource","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"source_type":{"type":"string","enum":["appResource","dbResource"],"description":"Type of the source resource. `appResource` - application. `dbResource` - database.","example":"appResource"},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"System name of the source resource","example":"my-app"},"source_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of the source resource","example":"My App"},"target_id":{"type":"string","description":"Identifier of the target resource","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"target_type":{"type":"string","enum":["appResource","dbResource"],"description":"Type of the target resource. `appResource` - application. `dbResource` - database.","example":"appResource"},"target_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"System name of the target resource","example":"my-api"},"target_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of the target resource","example":"My API"}},"required":["id","source_id","source_type","source_name","source_display_name","target_id","target_type","target_name","target_display_name"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createApplicationInternalConnectionV3","summary":"Create internal connection","tags":["Applications"],"description":"Create an internal connection from this application to another application or a database, so they can reach each other over the private cluster network. Both services must be in the same cluster. Applications do not need to be deployed yet. The connection covers every process of the applications, including cron and job processes. The application from the URL path is always the source of the connection. Connections are bidirectional, so traffic is allowed both ways and only one connection can exist between a given pair of services - creating it again in either direction returns 409. An application cannot be connected to itself. The API key needs update access to both the application and the target.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the target resource to connect to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"target_type":{"type":"string","enum":["app","database"],"description":"Type of the target resource. `app` - application. `database` - database.","example":"app"}},"required":["target_id","target_type"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the created internal connection","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Conflict"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":409},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/internal-connections/{connection_id}":{"delete":{"operationId":"deleteApplicationInternalConnectionV3","summary":"Delete internal connection","tags":["Applications"],"description":"Delete an internal connection of this application. The application must be either the source or the target of the connection. After deletion the two services can no longer reach each other over the private cluster network.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"connection_id","required":true,"description":"Internal connection identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Internal connection deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/global-env-vars":{"get":{"operationId":"listGlobalEnvVarsV3","summary":"List global environment variables","tags":["Global Environment Variables"],"description":"Retrieve a paginated list of all company-wide global environment variables. Global variables are inherited by all applications in the company and can be overridden at the application level. Values are returned decrypted.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the global environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","description":"Name of the environment variable","example":"API_BASE_URL"},"value":{"type":"string","description":"Value of the environment variable","example":"https://api.example.com"},"is_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available at runtime","example":true},"is_buildtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available during the build step","example":true},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","key","value","is_runtime","is_buildtime","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createGlobalEnvVarV3","summary":"Create global environment variable","tags":["Global Environment Variables"],"description":"Create a new company-wide global environment variable. Global variables are inherited by all applications in the company and can be overridden by app-level variables with the same key. A deployment is required for the new variable to take effect in running applications.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable. Must be unique across all global variables in the company.","example":"API_BASE_URL"},"value":{"type":"string","maxLength":32768,"description":"Value of the environment variable. Will be stored encrypted at rest.","example":"https://api.example.com"},"is_runtime":{"default":true,"description":"Whether this variable is available at runtime. Defaults to true.","example":true,"type":"boolean"},"is_buildtime":{"default":true,"description":"Whether this variable is available during the build step. Defaults to true.","example":true,"type":"boolean"}},"required":["key","value"]}}}},"x-required-permissions":["APP:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the global environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","description":"Name of the environment variable","example":"API_BASE_URL"},"value":{"type":"string","description":"Value of the environment variable","example":"https://api.example.com"},"is_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available at runtime","example":true},"is_buildtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available during the build step","example":true},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","key","value","is_runtime","is_buildtime","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/global-env-vars/{id}":{"put":{"operationId":"updateGlobalEnvVarV3","summary":"Update global environment variable","tags":["Global Environment Variables"],"description":"Update an existing global environment variable. You can change the key, value, or runtime/buildtime flags. A deployment is required for changes to take effect in running applications.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"description":"New name for the environment variable","example":"API_BASE_URL","type":"string","minLength":1,"maxLength":255},"value":{"description":"New value for the environment variable. Will be stored encrypted at rest.","example":"https://api.example.com","type":"string","maxLength":32768},"is_runtime":{"description":"Whether this variable is available at runtime","example":true,"type":"boolean"},"is_buildtime":{"description":"Whether this variable is available during the build step","example":true,"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Global environment variable identifier"}],"x-required-permissions":["APP:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the global environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","description":"Name of the environment variable","example":"API_BASE_URL"},"value":{"type":"string","description":"Value of the environment variable","example":"https://api.example.com"},"is_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available at runtime","example":true},"is_buildtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is available during the build step","example":true},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","key","value","is_runtime","is_buildtime","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteGlobalEnvVarV3","summary":"Delete global environment variable","tags":["Global Environment Variables"],"description":"Delete a global environment variable. A deployment is required for the removal to take effect in running applications.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Global environment variable identifier"}],"x-required-permissions":["APP:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Deletion result message","example":"Global environment variable deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/requests-per-minute":{"get":{"operationId":"getApplicationRequestsPerMinuteV3","summary":"Get application requests per minute","tags":["Applications"],"description":"Retrieve a time series of requests per minute for an application. Returns data points at the specified interval, useful for monitoring traffic patterns and detecting spikes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/response-time":{"get":{"operationId":"getApplicationResponseTimeV3","summary":"Get application response time","tags":["Applications"],"description":"Retrieve a time series of response times for an application. Use the optional `percent` parameter to get a specific percentile (e.g., p95 or p99) instead of the default.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"example":95,"type":"integer","minimum":1,"maximum":99},"in":"query","name":"percent","required":false,"description":"Percentile value for response time calculation (1-99). For example, 95 returns the p95 response time"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/response-time-avg":{"get":{"operationId":"getApplicationResponseTimeAvgV3","summary":"Get application average response time","tags":["Applications"],"description":"Retrieve the average response time in milliseconds for an application over the specified time range. Returns a single aggregated value rather than a time series.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"average_response_time_ms":{"type":"number","minimum":0,"description":"Average response time in milliseconds","example":123.45}},"required":["average_response_time_ms"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/status-codes":{"get":{"operationId":"getApplicationStatusCodesV3","summary":"Get application status code breakdown","tags":["Applications"],"description":"Retrieve a time series showing the breakdown of HTTP response status codes for an application. Each data point includes a map of status codes to their request counts.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"},"description":"Breakdown of request counts by HTTP status code","example":{"200":150,"404":12,"500":3}}},"required":["time","value"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/top-status-codes":{"get":{"operationId":"getApplicationTopStatusCodesV3","summary":"Get application top status codes","tags":["Applications"],"description":"Retrieve the most common HTTP response status codes for an application, ranked by total request count. Useful for identifying error rates and common response patterns.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","description":"HTTP status code","example":"200"},"total":{"type":"number","minimum":0,"description":"Total number of requests with this status code","example":1500}},"required":["status","total"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/top-countries":{"get":{"operationId":"getApplicationTopCountriesV3","summary":"Get application top countries","tags":["Applications"],"description":"Retrieve the countries generating the most traffic to an application, ranked by total request count. Each entry includes the country code, average response time, and total requests.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","description":"Two-letter country code (ISO 3166-1 alpha-2)","example":"US"},"response_time":{"type":"number","minimum":0,"description":"Average response time in milliseconds for requests from this country","example":85.2},"total":{"type":"number","minimum":0,"description":"Total number of requests from this country","example":5000}},"required":["country","response_time","total"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/slowest-requests":{"get":{"operationId":"getApplicationSlowestRequestsV3","summary":"Get application slowest requests","tags":["Applications"],"description":"Retrieve the slowest request paths for an application, ranked by average response time. Each entry includes the HTTP method, path, average response time, and total request count.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for this request group","example":"abc123"},"client_request_method":{"type":"string","description":"HTTP method of the request","example":"GET"},"client_request_path":{"type":"string","description":"URL path of the request","example":"/api/users"},"average_response_time_ms":{"type":"number","minimum":0,"description":"Average response time in milliseconds","example":1250.5},"count_of_requests":{"type":"number","minimum":0,"description":"Number of requests matching this method and path","example":342}},"required":["id","client_request_method","client_request_path","average_response_time_ms","count_of_requests"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/metrics/top-pages":{"get":{"operationId":"getApplicationTopPagesV3","summary":"Get application top pages","tags":["Applications"],"description":"Retrieve the most visited pages for an application, ranked by total request count. Useful for understanding which endpoints or pages receive the most traffic.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"page":{"type":"string","description":"URL path","example":"/api/users"},"total":{"type":"number","minimum":0,"description":"Total number of requests to this page","example":2500}},"required":["page","total"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/repository":{"get":{"operationId":"getApplicationRepositoryV3","summary":"Get application repository","tags":["Applications"],"description":"Retrieve metadata about the Git repository connected to an application: the source type, Git provider, repository URL, default branch, and the commit currently running (from the latest successful deployment). Call this first to discover the deployed commit SHA, then pass it as the `ref` to the tree and contents endpoints to inspect exactly the code that is running. Only applications with a `privateGit` or `publicGit` source have a repository; `dockerImage` and internally created apps return 422.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["privateGit","publicGit","dockerImage","app"],"description":"Where the application source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL.","example":"privateGit"},"git_type":{"type":"string","enum":["github","bitbucket","gitlab"],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository","example":"https://github.com/acme/my-app"},"default_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Default branch configured for deployments","example":"main"},"deployed_commit":{"anyOf":[{"type":"object","properties":{"sha":{"type":"string","description":"Commit SHA currently running, taken from the latest successful deployment","example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message","example":"Fix login redirect"},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit author login","example":"octocat"}},"required":["sha","message","author_login"],"additionalProperties":false},{"type":"null"}],"description":"The commit currently deployed from the app's current repository. Null if the application has never deployed successfully, or if its repository was changed after the last successful deployment (the deployed commit belongs to the old repo and no longer applies)."}},"required":["source","git_type","repo_url","default_branch","deployed_commit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/repository/tree":{"get":{"operationId":"listApplicationRepositoryTreeV3","summary":"List application repository tree","tags":["Applications"],"description":"List files and directories in the application Git repository at a given ref. Use this to discover the repository structure before reading individual files. Defaults to reading the commit of the latest successful deployment so you see exactly the code that is running. Only applications with a `privateGit` or `publicGit` source have a repository; `dockerImage` and internally created apps return 422.","parameters":[{"schema":{"example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0","type":"string"},"in":"query","name":"ref","required":false,"description":"Branch, tag, or commit SHA to read the tree at. Defaults to the commit of the latest successful deployment, falling back to the default branch when there is no such deployment or the app's repository was changed after it (so the deployed commit no longer exists in the current repo). Pass the deployed commit SHA to inspect exactly the code that is running."},{"schema":{"example":"src","type":"string"},"in":"query","name":"path","required":false,"description":"Directory path relative to the repository root. Defaults to the root."},{"schema":{"example":false,"type":"string"},"in":"query","name":"recursive","required":false,"description":"When true, returns the full tree under `path` recursively in a single response. When false (default), returns only the immediate children. Large trees may be truncated."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ref the tree was read at (the resolved commit SHA or branch)","example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"},"entries":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path of the entry relative to the repository root","example":"src/index.ts"},"type":{"type":"string","enum":["file","dir"],"description":"Entry type. `file` - a file (blob). `dir` - a directory (tree).","example":"file"},"size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"File size in bytes. Null for directories.","example":1024},"sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Object SHA of the entry, when available","example":"b1c2d3e4"}},"required":["path","type","size","sha"],"additionalProperties":false},"description":"Tree entries at the requested path"}},"required":["ref","entries"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/repository/contents":{"get":{"operationId":"getApplicationRepositoryFileV3","summary":"Read application repository file","tags":["Applications"],"description":"Read the contents of a single file from the application Git repository at a given ref. Defaults to the commit of the latest successful deployment so you read exactly the code that is running. Binary files and files larger than 1 MB return metadata only with a null `content` (check `is_binary` and `truncated`). Returns 404 when the file does not exist at the ref. Only applications with a `privateGit` or `publicGit` source have a repository; `dockerImage` and internally created apps return 422.","parameters":[{"schema":{"type":"string","minLength":1,"example":"src/index.ts"},"in":"query","name":"path","required":true,"description":"Path of the file to read, relative to the repository root."},{"schema":{"example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0","type":"string"},"in":"query","name":"ref","required":false,"description":"Branch, tag, or commit SHA to read the file at. Defaults to the commit of the latest successful deployment, falling back to the default branch when there is no such deployment or the app's repository was changed after it (so the deployed commit no longer exists in the current repo)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"path":{"type":"string","description":"Path of the file relative to the repository root","example":"src/index.ts"},"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ref the file was read at (the resolved commit SHA or branch)","example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UTF-8 file content. Null when the file is binary or exceeds the 1 MB size limit.","example":"export const main = () => console.log('hello')"},"size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"File size in bytes","example":1024},"is_binary":{"type":"boolean","description":"Whether the file was detected as binary. Binary files do not return content.","example":false},"truncated":{"type":"boolean","description":"Whether content was omitted because the file exceeds the 1 MB size limit","example":false}},"required":["path","ref","content","size","is_binary","truncated"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/applications/{id}/repository/search":{"get":{"operationId":"searchApplicationRepositoryV3","summary":"Search application repository code","tags":["Applications"],"description":"Search the application Git repository for code matching a query, useful for locating where something is defined or used. Search runs against the provider index, which covers the default branch, so it does not accept a ref. Result quality varies by provider: it is strongest on GitHub and more limited on GitLab and Bitbucket. Only applications with a `privateGit` or `publicGit` source have a repository; `dockerImage` and internally created apps return 422.","parameters":[{"schema":{"type":"string","minLength":1,"example":"createServer"},"in":"query","name":"query","required":true,"description":"Code search query. Searches file contents in the repository."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Application identifier"}],"x-required-permissions":["APP:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"matches":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path of the file containing the match","example":"src/server.ts"},"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ref the match was found on, when reported by the provider","example":"main"},"line":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Line number of the match, when available","example":12},"preview":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A short snippet of the matching line, when available","example":"const createServer = () => {}"}},"required":["path","ref","line","preview"],"additionalProperties":false},"description":"Matching code locations"}},"required":["matches"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases":{"post":{"operationId":"createDatabaseV3","summary":"Create database","tags":["Databases"],"description":"Create a new database on a specified cluster. The database is provisioned asynchronously - the initial status will be `creating` and will transition to `ready` once provisioning completes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2,"maxLength":64,"description":"Human-readable name for the new database. Must be between 2 and 64 characters.","example":"My Database"},"type":{"type":"string","enum":["postgresql","mariadb","mysql","redis","valkey"],"description":"Database engine type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey.","example":"postgresql"},"version":{"type":"string","description":"Database engine version to use. Available versions depend on the database type and the selected cluster - use the List Database Versions endpoint to get them. Unsupported versions are rejected with a 400 response.","example":"16"},"cluster_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the cluster (data center location) where the database will be created. Use the List Clusters endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"resource_type_id":{"type":"string","description":"Identifier of the database resource type (machine size). Use the List Database Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"db_name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^[a-zA-Z0-9_\\-+]+$","description":"Name of the database to create within the server. Must contain only alphanumeric characters, underscores, hyphens, or plus signs.","example":"my_database"},"db_password":{"type":"string","minLength":4,"maxLength":100,"pattern":"^[a-zA-Z0-9_?<>#@\\-=+]+$","description":"Password for the database user. Must be between 4 and 100 characters and contain only alphanumeric characters and special characters (_?<>#@-=+).","example":"securePassword123"},"db_user":{"description":"Username for database authentication. Must be between 2 and 32 characters. Cannot be \"root\" or \"postgres\". If omitted, the database engine default user is used.","example":"db_user","type":"string","minLength":2,"maxLength":32,"pattern":"^[a-zA-Z0-9_\\-+]+$"},"project_id":{"description":"Identifier of the project to group this database under. When omitted, the database is not assigned to any project.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"extensions":{"description":"PostgreSQL extensions to enable. Only applicable when type is `postgresql`.","type":"object","properties":{"enable_vector":{"description":"Enable the pgvector extension for vector similarity search","example":false,"type":"boolean"},"enable_postgis":{"description":"Enable the PostGIS extension for geospatial data","example":false,"type":"boolean"},"enable_cron":{"description":"Enable the pg_cron extension for scheduled jobs","example":false,"type":"boolean"}}}},"required":["display_name","type","version","cluster_id","resource_type_id","db_name","db_password"],"additionalProperties":false}}}},"x-required-permissions":["DATABASE:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the database","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this database","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this database is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-database"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Database"},"type":{"type":"string","enum":["postgresql","mariadb","mysql","mongodb","redis","valkey"],"description":"Database engine type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey.","example":"postgresql"},"version":{"type":"string","description":"Database engine version","example":"16"},"status":{"anyOf":[{"type":"string","enum":["creating","ready","updating","passwordChange","passwordChangeFailed","deleting","error","dbDeletionFailed","restoring","restoringFailed","updatingExternalConnection"]},{"type":"null"}],"description":"Current status of the database reflecting the most recent lifecycle operation","example":"ready"},"is_suspended":{"type":"boolean","description":"Whether the database is currently suspended","example":false},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this database","example":"db1"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","type","version","status","is_suspended","resource_type_name","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"get":{"operationId":"listDatabasesV3","summary":"List databases","tags":["Databases"],"description":"Retrieve a paginated list of all databases the authenticated API key has access to. Results are ordered by name and can be paginated using the `limit` and `offset` query parameters. Use the `status`, `type`, `project_id`, and `search` query parameters to narrow down the results - multiple filters combine with AND.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"example":"ready","type":"string","enum":["creating","ready","updating","passwordChange","passwordChangeFailed","deleting","error","dbDeletionFailed","restoring","restoringFailed","updatingExternalConnection"]},"in":"query","name":"status","required":false,"description":"Return only databases with this status. The status reflects the most recent lifecycle operation, for example `ready`, `creating`, `updating`, `restoring`, `deleting`, or `error`."},{"schema":{"example":"postgresql","type":"string","enum":["postgresql","mariadb","mysql","mongodb","redis","valkey"]},"in":"query","name":"type","required":false,"description":"Return only databases of this engine type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey."},{"schema":{"example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"project_id","required":false,"description":"Return only databases that belong to this project."},{"schema":{"example":"my-app","type":"string","minLength":1,"maxLength":100},"in":"query","name":"search","required":false,"description":"Return only databases whose name or display name contains this text. Matching is case-insensitive."}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the database","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-database"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Database"},"status":{"anyOf":[{"type":"string","enum":["creating","ready","updating","passwordChange","passwordChangeFailed","deleting","error","dbDeletionFailed","restoring","restoringFailed","updatingExternalConnection"]},{"type":"null"}],"description":"Current status of the database reflecting the most recent lifecycle operation","example":"ready"},"type":{"type":"string","enum":["postgresql","mariadb","mysql","mongodb","redis","valkey"],"description":"Database engine type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey.","example":"postgresql"},"version":{"type":"string","description":"Database engine version","example":"16"},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this database","example":"db1"},"is_suspended":{"type":"boolean","description":"Whether the database is currently suspended","example":false},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","display_name","status","type","version","resource_type_name","is_suspended","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}":{"get":{"operationId":"getDatabaseV3","summary":"Get database","tags":["Databases"],"description":"Retrieve the full details of a database including connection hostnames, cluster information, and current status.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the database","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this database","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this database is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-database"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Database"},"type":{"type":"string","enum":["postgresql","mariadb","mysql","mongodb","redis","valkey"],"description":"Database engine type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey.","example":"postgresql"},"version":{"type":"string","description":"Database engine version","example":"16"},"status":{"anyOf":[{"type":"string","enum":["creating","ready","updating","passwordChange","passwordChangeFailed","deleting","error","dbDeletionFailed","restoring","restoringFailed","updatingExternalConnection"]},{"type":"null"}],"description":"Current status of the database reflecting the most recent lifecycle operation","example":"ready"},"is_suspended":{"type":"boolean","description":"Whether the database is currently suspended","example":false},"cluster_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the cluster where the database is deployed. Use the List Clusters endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"cluster_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable name of the cluster","example":"Iowa, USA"},"cluster_location":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Google Cloud region where the cluster is located","example":"us-central1"},"resource_type_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the database resource type (machine size). Use the List Database Resource Types endpoint to retrieve available options.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this database","example":"db1"},"cpu_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum CPU allocation in millicores","example":500},"memory_limit":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum memory allocation in megabytes","example":512},"storage_size":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Storage allocation in megabytes","example":10000},"db_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the database within the server. Returns \"0\" for Redis and Valkey.","example":"my_database"},"internal_hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Internal Kubernetes DNS hostname for service-to-service communication within the cluster","example":"my-database.my-database-abc123.svc.cluster.local"},"internal_port":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Port number for internal connections within the cluster","example":"5432"},"external_hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"External hostname for connections from outside the cluster. Null while the external connection is disabled.","example":"ext-db.example.com"},"external_port":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Port number for external connections from outside the cluster. Null while the external connection is disabled.","example":"15432"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","type","version","status","is_suspended","cluster_id","cluster_display_name","cluster_location","resource_type_id","resource_type_name","cpu_limit","memory_limit","storage_size","db_name","internal_hostname","internal_port","external_hostname","external_port","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateDatabaseV3","summary":"Update database","tags":["Databases"],"description":"Update one or more properties of an existing database. Only include the fields you want to change - omitted fields are left unchanged. Changing the resource type triggers an asynchronous update operation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"Human-readable name shown in the dashboard and API responses","example":"My Database","type":"string","minLength":2,"maxLength":64},"resource_type_id":{"description":"Identifier of the database resource type (machine size) to change to. Changing the resource type triggers an update operation. On OCI clusters, changing a DB1 database to a larger resource type moves its data to another storage backend: the database is unavailable while the data is copied, and all of its snapshot backups (daily and manual) are deleted.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string"},"project_id":{"description":"Identifier of the project to assign this database to. Set to null to remove the project assignment.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the database","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this database","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this database is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-database"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Database"},"type":{"type":"string","enum":["postgresql","mariadb","mysql","mongodb","redis","valkey"],"description":"Database engine type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey.","example":"postgresql"},"version":{"type":"string","description":"Database engine version","example":"16"},"status":{"anyOf":[{"type":"string","enum":["creating","ready","updating","passwordChange","passwordChangeFailed","deleting","error","dbDeletionFailed","restoring","restoringFailed","updatingExternalConnection"]},{"type":"null"}],"description":"Current status of the database reflecting the most recent lifecycle operation","example":"ready"},"is_suspended":{"type":"boolean","description":"Whether the database is currently suspended","example":false},"resource_type_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the resource type (machine size) assigned to this database","example":"db1"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the database was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","type","version","status","is_suspended","resource_type_name","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteDatabaseV3","summary":"Delete database","tags":["Databases"],"description":"Permanently delete a database and all of its data. This operation is irreversible and cannot be performed while the database status is creating, deleting, updating, or when a backup is in progress.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database is being deleted"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/activate":{"post":{"operationId":"activateDatabaseV3","summary":"Activate database","tags":["Databases"],"description":"Activate a previously suspended database, restoring it to a running state. The operation is asynchronous - the database status will transition once activation completes.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database activation started"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/suspend":{"post":{"operationId":"suspendDatabaseV3","summary":"Suspend database","tags":["Databases"],"description":"Suspend a running database by stopping all of its processes. The database configuration and data are preserved. Use the activate endpoint to restore the database. Cannot be performed while the database is being created, deleted, updated, or has a backup in progress.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database suspension started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/restart":{"post":{"operationId":"restartDatabaseV3","summary":"Restart database","tags":["Databases"],"description":"Restart the database. The database configuration and stored data are preserved. The operation is asynchronous - the database status transitions to `updating` while the restart is in progress and back to `ready` once it completes. Allowed only when the database status is `ready`, `error`, `passwordChangeFailed`, or `restoringFailed`, the database is not suspended, and there is no backup in progress.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database restart started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/reset-password":{"post":{"operationId":"resetDatabasePasswordV3","summary":"Reset database password","tags":["Databases"],"description":"Reset the password for a database. The operation is asynchronous - the database status will change to `passwordChange` during the process and transition back to `ready` once complete.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"new_password":{"type":"string","minLength":4,"maxLength":100,"pattern":"^[a-zA-Z0-9_?<>#@\\-=+]+$","description":"New password for the database user. Must be between 4 and 100 characters and contain only alphanumeric characters and special characters (_?<>#@-=+).","example":"newSecurePassword123"}},"required":["new_password"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database password reset started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/cpu-usage":{"get":{"operationId":"getDatabaseCpuUsageV3","summary":"Get database CPU usage","tags":["Databases"],"description":"Retrieve a time series of CPU usage for a database. Returns data points at the specified interval showing actual CPU consumption in cores.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/cpu-limit":{"get":{"operationId":"getDatabaseCpuLimitV3","summary":"Get database CPU limit","tags":["Databases"],"description":"Retrieve a time series of CPU limits for a database. Returns data points at the specified interval showing the configured CPU limit in cores.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/memory-usage":{"get":{"operationId":"getDatabaseMemoryUsageV3","summary":"Get database memory usage","tags":["Databases"],"description":"Retrieve a time series of memory usage for a database. Returns data points at the specified interval showing actual memory consumption in bytes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/memory-limit":{"get":{"operationId":"getDatabaseMemoryLimitV3","summary":"Get database memory limit","tags":["Databases"],"description":"Retrieve a time series of memory limits for a database. Returns data points at the specified interval showing the configured memory limit in bytes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/storage-usage":{"get":{"operationId":"getDatabaseStorageUsageV3","summary":"Get database storage usage","tags":["Databases"],"description":"Retrieve a time series of storage usage for a database. Returns data points at the specified interval showing actual disk consumption in bytes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/storage-limit":{"get":{"operationId":"getDatabaseStorageLimitV3","summary":"Get database storage limit","tags":["Databases"],"description":"Retrieve a time series of storage limits for a database. Returns data points at the specified interval showing the configured storage limit in bytes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":60},"in":"query","name":"interval_in_seconds","required":true,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/all-storage":{"get":{"operationId":"getDatabaseAllStorageV3","summary":"Get database total storage","tags":["Databases"],"description":"Retrieve the current total allocated storage for a database. Returns a single point-in-time value in bytes.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Current metric value","example":1073741824}},"required":["value"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/metrics/used-storage":{"get":{"operationId":"getDatabaseUsedStorageV3","summary":"Get database used storage","tags":["Databases"],"description":"Retrieve the current used storage for a database. Returns a single point-in-time value in bytes.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Current metric value","example":1073741824}},"required":["value"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/backups":{"get":{"operationId":"listDatabaseBackupsV3","summary":"List database backups","tags":["Databases"],"description":"Retrieve all backups for a database, including both automatic daily backups and user-created manual backups. Daily backups have a 7-day retention period and manual backups have a 14-day retention period. Use the optional type filter to retrieve only daily or manual backups.","parameters":[{"schema":{"type":"string","enum":["daily","manual"]},"in":"query","name":"type","required":false,"description":"Filter backups by type. When omitted, both daily and manual backups are returned."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Backup identifier (unique backup name)","example":"daily-backup-2025-01-15"},"name":{"type":"string","description":"Unique backup name","example":"daily-backup-2025-01-15"},"display_name":{"type":"string","description":"Human-readable name for the backup. For daily backups, this matches the backup name.","example":"My Manual Backup"},"type":{"type":"string","enum":["daily","manual"],"description":"Backup type. `daily` - automatic daily backup with 7-day retention. `manual` - user-created backup with 14-day retention.","example":"manual"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup expires and will be automatically deleted, in ISO 8601 format","example":"2025-02-06T00:00:00.000Z"}},"required":["id","name","display_name","type","created_at","expires_at"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createDatabaseBackupV3","summary":"Create database backup","tags":["Databases"],"description":"Create a manual backup of a database. The backup is created asynchronously and will appear in the backup list once completed. Manual backups have a 14-day retention period. Databases created on OCI clusters use external backups instead, and this endpoint returns a 400 for them.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"description":"Human-readable name for the manual backup","example":"Pre-migration backup"}},"required":["display_name"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database backup creation started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/backups/{backup_id}":{"delete":{"operationId":"deleteDatabaseBackupV3","summary":"Delete database backup","tags":["Databases"],"description":"Delete a specific database backup by its unique name. The deletion is processed asynchronously.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","example":"manual-my-backup-abc123"},"in":"path","name":"backup_id","required":true,"description":"Backup identifier (unique backup name)"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database backup deletion started"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/backups/{backup_id}/restore":{"post":{"operationId":"restoreDatabaseBackupV3","summary":"Restore database backup","tags":["Databases"],"description":"Restore a database from a specific backup. The restore operation is asynchronous - the database status will reflect the progress of the operation. By default the source database is restored in place and its current data is replaced. Optionally pass `target_database_id` in the body to restore the backup into a different database; the target must be in the same cluster, of the same database type, and on the same version as the source, and must have snapshot backups too (databases created on OCI clusters use external backups instead). On OCI clusters, DB1 databases keep their data on a different storage backend than larger resource types, so a backup of a DB1 database cannot be restored into a larger one, or the other way round. The request is rejected with a 400 while another operation is in progress on the database being restored, or while a backup of the source database is still being created.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"target_database_id":{"description":"Optional ID of a different database to restore the backup into. When provided, the backup is cloned to this target database instead of overwriting the source. The target must be in the same cluster, of the same database type, and on the same version as the source, and must have snapshot backups too. Its current data will be replaced.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},{"type":"null"}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","example":"manual-my-backup-abc123"},"in":"path","name":"backup_id","required":true,"description":"Backup identifier (unique backup name)"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database backup restore started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/external-connection/toggle":{"post":{"operationId":"toggleDatabaseExternalConnectionV3","summary":"Toggle external connection","tags":["Databases"],"description":"Toggle external network access for a database. When enabled, the database becomes accessible from outside the cluster via the external hostname and port. When disabled, the database is only accessible internally. The operation is asynchronous - the database status will reflect the progress.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"External connection toggle started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/internal-connections":{"get":{"operationId":"listDatabaseInternalConnectionsV3","summary":"List internal connections","tags":["Databases"],"description":"Retrieve all internal connections for a database. Internal connections allow services within the same cluster to communicate with each other. Returns connections where this database is either the source or target.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Internal connection identifier","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"source_id":{"type":"string","description":"Identifier of the source resource","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"source_type":{"type":"string","enum":["appResource","dbResource"],"description":"Type of the source resource. `appResource` - application. `dbResource` - database.","example":"dbResource"},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"System name of the source resource","example":"my-database"},"source_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of the source resource","example":"My Database"},"target_id":{"type":"string","description":"Identifier of the target resource","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"target_type":{"type":"string","enum":["appResource","dbResource"],"description":"Type of the target resource. `appResource` - application. `dbResource` - database.","example":"appResource"},"target_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"System name of the target resource","example":"my-app"},"target_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name of the target resource","example":"My App"}},"required":["id","source_id","source_type","source_name","source_display_name","target_id","target_type","target_name","target_display_name"],"additionalProperties":false}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createDatabaseInternalConnectionV3","summary":"Create internal connection","tags":["Databases"],"description":"Create an internal connection from this database to another service (application or database). Both services must be in the same cluster. The target application does not need to be deployed yet - you can connect a database before the first deployment. The connection covers every process of the application, including cron and job processes. The database from the URL path is always the source of the connection. Connections are bidirectional, so only one connection can exist between a given pair of services - creating it again in either direction returns 409. A database cannot be connected to itself. The API key needs update access to both the database and the target.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the target resource to connect to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"target_type":{"type":"string","enum":["app","database"],"description":"Type of the target resource. `app` - application. `database` - database.","example":"app"}},"required":["target_id","target_type"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the created internal connection","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Conflict"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":409},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/internal-connections/{connection_id}":{"delete":{"operationId":"deleteDatabaseInternalConnectionV3","summary":"Delete internal connection","tags":["Databases"],"description":"Delete an internal connection associated with this database. The connection must belong to this database (either as source or target).","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"connection_id","required":true,"description":"Internal connection identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Internal connection deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/ip-restriction":{"get":{"operationId":"getDatabaseIpRestrictionV3","summary":"Get database IP restriction","tags":["Databases"],"description":"Retrieve the current IP restriction configuration for a database. Returns the restriction type, whether it is active, and the list of IP addresses or CIDR ranges. If no restriction has been configured, returns a default state with type `deny`, disabled, and an empty IP list.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["allow","deny"],"description":"Restriction type. `allow` - only listed IPs can access. `deny` - listed IPs are blocked.","example":"deny"},"is_enabled":{"type":"boolean","description":"Whether the IP restriction is currently active","example":false},"ip_list":{"type":"array","items":{"type":"string"},"description":"List of IP addresses or CIDR ranges included in the restriction","example":["203.0.113.0/24","198.51.100.1"]}},"required":["type","is_enabled","ip_list"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"put":{"operationId":"updateDatabaseIpRestrictionV3","summary":"Update database IP restriction","tags":["Databases"],"description":"Update the IP restriction configuration for a database. Sets the restriction type (allow or deny), enables or disables it, and updates the list of IP addresses or CIDR ranges. IP restrictions only apply to external connections. When type is `allow`, only the listed IPs can access the database. When type is `deny`, the listed IPs are blocked. For MySQL and MariaDB, a blocked client may still receive the initial server greeting because the server speaks first, but the connection is closed as soon as the client sends any data, so authentication can never complete. The change is applied to the cluster before the response is sent, which can take up to a couple of minutes. Returns the updated restriction state, or 409 if another change to the same database is still being applied.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["allow","deny"],"description":"Restriction type. `allow` - only listed IPs can access the database externally. `deny` - listed IPs are blocked from accessing the database externally."},"is_enabled":{"type":"boolean","description":"Whether the IP restriction should be active"},"ip_list":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":45},"description":"List of IP addresses or CIDR ranges to include in the restriction. Each IP must be a valid public unicast address or CIDR range."}},"required":["type","is_enabled","ip_list"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["allow","deny"],"description":"Restriction type. `allow` - only listed IPs can access. `deny` - listed IPs are blocked.","example":"allow"},"is_enabled":{"type":"boolean","description":"Whether the IP restriction is currently active","example":true},"ip_list":{"type":"array","items":{"type":"string"},"description":"List of IP addresses or CIDR ranges included in the restriction","example":["203.0.113.0/24","198.51.100.1"]}},"required":["type","is_enabled","ip_list"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Conflict"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":409},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/backup-targets":{"get":{"operationId":"listDatabaseBackupTargetsV3","summary":"List database backup targets","tags":["Databases"],"description":"Retrieve the backup targets attached to a database. A backup target is an S3-compatible bucket that receives scheduled and manual dump backups of the database. Storage credentials are never returned. Databases that do not support external backups return a 400.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Backup target identifier","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"System-generated slug of the backup target, used in dump file names and the backup schedule job name","example":"daily-offsite"},"display_name":{"type":"string","description":"Human-readable name of the backup target","example":"Daily offsite"},"schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cron schedule of the automatic dump backups, in standard 5-field cron syntax (UTC). Null means a daily run at a stable, automatically assigned time between 00:00 and 05:59 UTC.","example":"15 3 * * *"},"is_enabled":{"type":"boolean","description":"Whether automatic scheduled backups to this target are enabled","example":true},"retention_days":{"type":"number","description":"Days automatic backups are kept in the bucket before being pruned","example":7},"manual_retention_days":{"type":"number","description":"Days manual backups are kept in the bucket before being pruned. 0 keeps manual backups forever.","example":14},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Object key prefix for the dump files inside the bucket. Null uses the default per-database prefix.","example":"my-app/db-backups"},"object_storage_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the Sevalla object storage bucket this target uploads to. Null when the target uses external S3-compatible storage with customer-provided credentials.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"bucket_name":{"type":"string","description":"Name of the destination bucket","example":"my-backups"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"S3-compatible endpoint URL of the destination storage","example":"https://account.r2.cloudflarestorage.com"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Region of the destination storage","example":"auto"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup target was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup target was last updated, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","display_name","schedule","is_enabled","retention_days","manual_retention_days","prefix","object_storage_id","bucket_name","endpoint","region","created_at","updated_at"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createDatabaseBackupTargetV3","summary":"Create database backup target","tags":["Databases"],"description":"Attach a backup target to a database. A backup target is an S3-compatible bucket that receives scheduled and manual dump backups. Point it at a Sevalla object storage bucket with `object_storage_id`, or at any external S3-compatible storage with `bucket_name`, `access_key` and `secret_key`. The target configuration is applied to the database asynchronously; scheduled backups start once the apply completes. A database can have up to 5 backup targets. The database and its backups must be in a ready state. Databases that do not support external backups return a 400.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable name for the backup target","example":"Daily offsite"},"schedule":{"description":"Cron schedule for automatic dump backups, in standard 5-field cron syntax (UTC), for example `15 3 * * *`. The schedule cannot run more often than every 30 minutes. When omitted, backups run daily at a stable, automatically assigned time between 00:00 and 05:59 UTC.","example":"15 3 * * *","type":"string","pattern":"^\\S+ \\S+ \\S+ \\S+ \\S+$"},"is_enabled":{"description":"Whether automatic scheduled backups are enabled. Defaults to true.","example":true,"type":"boolean"},"retention_days":{"description":"Days automatic backups are kept before being pruned. Defaults to 7.","example":7,"type":"integer","minimum":1,"maximum":365},"manual_retention_days":{"description":"Days manual backups are kept before being pruned. 0 keeps them forever. Defaults to 14.","example":14,"type":"integer","minimum":0,"maximum":365},"prefix":{"description":"Object key prefix for the dump files inside the bucket. Defaults to a per-database prefix.","example":"my-app/db-backups","type":"string","minLength":1,"maxLength":512},"object_storage_id":{"description":"Identifier of a Sevalla object storage bucket to upload backups to. Provide either this field or the external S3 connection fields, not both.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"bucket_name":{"description":"Name of the external S3 bucket. Required together with access_key and secret_key for external storage.","example":"my-backups","type":"string","minLength":1,"maxLength":255},"endpoint":{"description":"S3-compatible endpoint URL of the external storage","example":"https://account.r2.cloudflarestorage.com","type":"string","format":"uri"},"region":{"description":"Region of the external storage","example":"us-east-1","type":"string","minLength":1,"maxLength":64},"access_key":{"description":"Access key for the external storage. Stored encrypted and never returned.","example":"AKIA...","type":"string","minLength":1},"secret_key":{"description":"Secret key for the external storage. Stored encrypted and never returned.","example":"wJalr...","type":"string","minLength":1}},"required":["display_name"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Backup target identifier","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"System-generated slug of the backup target, used in dump file names and the backup schedule job name","example":"daily-offsite"},"display_name":{"type":"string","description":"Human-readable name of the backup target","example":"Daily offsite"},"schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cron schedule of the automatic dump backups, in standard 5-field cron syntax (UTC). Null means a daily run at a stable, automatically assigned time between 00:00 and 05:59 UTC.","example":"15 3 * * *"},"is_enabled":{"type":"boolean","description":"Whether automatic scheduled backups to this target are enabled","example":true},"retention_days":{"type":"number","description":"Days automatic backups are kept in the bucket before being pruned","example":7},"manual_retention_days":{"type":"number","description":"Days manual backups are kept in the bucket before being pruned. 0 keeps manual backups forever.","example":14},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Object key prefix for the dump files inside the bucket. Null uses the default per-database prefix.","example":"my-app/db-backups"},"object_storage_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the Sevalla object storage bucket this target uploads to. Null when the target uses external S3-compatible storage with customer-provided credentials.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"bucket_name":{"type":"string","description":"Name of the destination bucket","example":"my-backups"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"S3-compatible endpoint URL of the destination storage","example":"https://account.r2.cloudflarestorage.com"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Region of the destination storage","example":"auto"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup target was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup target was last updated, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","display_name","schedule","is_enabled","retention_days","manual_retention_days","prefix","object_storage_id","bucket_name","endpoint","region","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/backup-targets/{target_id}":{"put":{"operationId":"updateDatabaseBackupTargetV3","summary":"Update database backup target","tags":["Databases"],"description":"Update a backup target of a database. Only the provided fields are changed. Changing connection fields switches the target between Sevalla object storage and external S3 storage. The new configuration is applied to the database asynchronously. The database and its backups must be in a ready state. Databases that do not support external backups return a 400.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"New human-readable name for the backup target","example":"Daily offsite","type":"string","minLength":1,"maxLength":200},"schedule":{"description":"New cron schedule for automatic dump backups, in standard 5-field cron syntax (UTC). The schedule cannot run more often than every 30 minutes. Pass null to switch back to the automatically assigned daily time.","example":"15 3 * * *","anyOf":[{"type":"string","pattern":"^\\S+ \\S+ \\S+ \\S+ \\S+$"},{"type":"null"}]},"is_enabled":{"description":"Enable or disable automatic scheduled backups to this target","example":true,"type":"boolean"},"retention_days":{"description":"Days automatic backups are kept before being pruned","example":7,"type":"integer","minimum":1,"maximum":365},"manual_retention_days":{"description":"Days manual backups are kept before being pruned. 0 keeps them forever.","example":14,"type":"integer","minimum":0,"maximum":365},"prefix":{"description":"New object key prefix for the dump files inside the bucket. Pass null to switch back to the default per-database prefix. Existing backups under the old prefix become invisible to the backup list.","example":"my-app/db-backups","anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]},"object_storage_id":{"description":"Identifier of a Sevalla object storage bucket to switch this target to. Provide either this field or the external S3 connection fields, not both.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"bucket_name":{"description":"Name of the external S3 bucket to switch this target to, together with access_key and secret_key","example":"my-backups","type":"string","minLength":1,"maxLength":255},"endpoint":{"description":"S3-compatible endpoint URL of the external storage","example":"https://account.r2.cloudflarestorage.com","type":"string","format":"uri"},"region":{"description":"Region of the external storage","example":"us-east-1","type":"string","minLength":1,"maxLength":64},"access_key":{"description":"Access key for the external storage. Stored encrypted and never returned.","example":"AKIA...","type":"string","minLength":1},"secret_key":{"description":"Secret key for the external storage. Stored encrypted and never returned.","example":"wJalr...","type":"string","minLength":1}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"target_id","required":true,"description":"Backup target identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Backup target identifier","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"System-generated slug of the backup target, used in dump file names and the backup schedule job name","example":"daily-offsite"},"display_name":{"type":"string","description":"Human-readable name of the backup target","example":"Daily offsite"},"schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cron schedule of the automatic dump backups, in standard 5-field cron syntax (UTC). Null means a daily run at a stable, automatically assigned time between 00:00 and 05:59 UTC.","example":"15 3 * * *"},"is_enabled":{"type":"boolean","description":"Whether automatic scheduled backups to this target are enabled","example":true},"retention_days":{"type":"number","description":"Days automatic backups are kept in the bucket before being pruned","example":7},"manual_retention_days":{"type":"number","description":"Days manual backups are kept in the bucket before being pruned. 0 keeps manual backups forever.","example":14},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Object key prefix for the dump files inside the bucket. Null uses the default per-database prefix.","example":"my-app/db-backups"},"object_storage_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the Sevalla object storage bucket this target uploads to. Null when the target uses external S3-compatible storage with customer-provided credentials.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"bucket_name":{"type":"string","description":"Name of the destination bucket","example":"my-backups"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"S3-compatible endpoint URL of the destination storage","example":"https://account.r2.cloudflarestorage.com"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Region of the destination storage","example":"auto"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup target was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup target was last updated, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","display_name","schedule","is_enabled","retention_days","manual_retention_days","prefix","object_storage_id","bucket_name","endpoint","region","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteDatabaseBackupTargetV3","summary":"Delete database backup target","tags":["Databases"],"description":"Detach a backup target from a database. Scheduled backups to this target stop and its backups disappear from the backup list, but the dump files already uploaded stay in the bucket. The removal is applied to the database asynchronously. Rejected with a 400 while a backup or a restore using this target is in progress. Databases that do not support external backups return a 400.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"target_id","required":true,"description":"Backup target identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Database backup target deletion started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/external-backups":{"get":{"operationId":"listDatabaseExternalBackupsV3","summary":"List external database backups","tags":["Databases"],"description":"Retrieve the external backups of a database across all of its backup targets. External backups are dump files stored in the backup target buckets; the bucket content is the source of truth, so this endpoint lists the buckets live. Databases without backup targets return an empty list. A target whose bucket cannot be listed, for example because its credentials were revoked, is skipped. Databases that do not support external backups return a 400.","parameters":[{"schema":{"type":"string","enum":["automatic","manual"]},"in":"query","name":"type","required":false,"description":"Filter backups by type. `automatic` matches scheduled backups, `manual` matches user-created backups. When omitted, both are returned."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"External backup identifier, the dump file name in the backup target bucket","example":"20250115-013000_manual_pg17_my-backup.sql.gz"},"display_name":{"type":"string","description":"Human-readable name for the backup. Manual backups use the name given at creation, automatic backups use the backup target name.","example":"My Manual Backup"},"type":{"type":"string","enum":["automatic","manual"],"description":"Backup type. `automatic` - created by the backup target schedule, pruned after the target retention days. `manual` - user-created, pruned after the target manual retention days.","example":"manual"},"format":{"type":"string","enum":["sql_dump","rdb_dump"],"description":"Backup file format. `sql_dump` - gzip-compressed SQL dump (postgresql, mysql, mariadb). `rdb_dump` - gzip-compressed RDB file (redis, valkey).","example":"sql_dump"},"size_bytes":{"type":"number","description":"Size of the backup file in bytes","example":4830},"engine_version":{"type":"string","description":"Version of the database engine the backup was taken from","example":"17"},"target_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the backup target holding this backup","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the backup was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the backup expires and gets pruned from the bucket, in ISO 8601 format. Null when the backup is kept forever, which happens for manual backups on a target with manual retention set to 0.","example":"2025-02-06T00:00:00.000Z"}},"required":["id","display_name","type","format","size_bytes","engine_version","target_id","created_at","expires_at"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createDatabaseExternalBackupV3","summary":"Create external database backup","tags":["Databases"],"description":"Create a manual external backup of a database. The database is dumped and the file is uploaded to the backup target bucket asynchronously; the backup appears in the external backup list once the upload completes. Requires at least one backup target attached to the database, otherwise a 400 is returned. A target can hold at most 5 manual backups. The database and its backups must be in a ready state. Databases that do not support external backups return a 400.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable name for the manual backup","example":"Pre-migration backup"},"target_id":{"description":"Identifier of the backup target to upload the backup to. Required when the database has more than one backup target. When the database has exactly one target, it is used automatically.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["display_name"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"External database backup creation started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/external-backups/{backup_id}":{"delete":{"operationId":"deleteDatabaseExternalBackupV3","summary":"Delete external database backup","tags":["Databases"],"description":"Delete an external backup file from its backup target bucket. The file is removed immediately. Both automatic and manual backups can be deleted. Databases that do not support external backups return a 400.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","example":"20250115-013000_manual_pg17_my-backup.sql.gz"},"in":"path","name":"backup_id","required":true,"description":"External backup identifier from the backup list"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"External database backup deleted"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/external-backups/{backup_id}/restore":{"post":{"operationId":"restoreDatabaseExternalBackupV3","summary":"Restore external database backup","tags":["Databases"],"description":"Restore a database from an external backup. The dump file is downloaded from the backup target bucket and replayed into the database asynchronously - the database status reflects the progress and ends in `ready`, or `restoringFailed` when the replay fails. The destination data is replaced by the backup content. By default the source database is restored in place. Optionally pass `target_database_id` to restore into a different database of the same type in the same cluster. Restores are attempted regardless of engine version; an incompatible dump fails the restore. Rejected with a 400 while another restore is in progress on the destination. Databases that do not support external backups return a 400.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"target_database_id":{"description":"Optional ID of a different database to restore the backup into. When provided, the backup is restored into this database instead of the source. The target must be in the same cluster and of the same database type as the source. Its current data will be replaced.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},{"type":"null"}]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","example":"20250115-013000_manual_pg17_my-backup.sql.gz"},"in":"path","name":"backup_id","required":true,"description":"External backup identifier from the backup list"}],"x-required-permissions":["DATABASE:UPDATE"],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"External database backup restore started"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/databases/{id}/external-backups/{backup_id}/download-url":{"get":{"operationId":"getDatabaseExternalBackupDownloadUrlV3","summary":"Get external backup download URL","tags":["Databases"],"description":"Generate a short-lived presigned URL to download an external backup file from its backup target bucket. The URL is valid for 2 minutes. Databases that do not support external backups return a 400.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Database identifier"},{"schema":{"type":"string","example":"20250115-013000_manual_pg17_my-backup.sql.gz"},"in":"path","name":"backup_id","required":true,"description":"External backup identifier from the backup list"}],"x-required-permissions":["DATABASE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Presigned download URL for the backup file. Valid for 2 minutes.","example":"https://bucket.r2.cloudflarestorage.com/backups/dump.sql.gz?X-Amz-Signature=..."},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the download URL expires, in ISO 8601 format","example":"2025-01-30T00:02:00.000Z"}},"required":["url","expires_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/docker-registries":{"get":{"operationId":"listDockerRegistriesV3","summary":"List Docker registry credentials","tags":["Docker Registries"],"description":"Retrieve a paginated list of all Docker registry credentials in the company. Credentials are used to authenticate with private Docker registries when pulling images for deployments. The secret field is never included in responses.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"}],"x-required-permissions":["REGISTRY_CREDENTIAL:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the Docker registry credential","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Human-readable name for the Docker registry credential","example":"My Docker Hub"},"registry":{"type":"string","enum":["gcr","ecr","dockerHub","github","gitlab","digitalOcean","custom"],"description":"Docker registry provider. `dockerHub` - Docker Hub. `gcr` - Google Container Registry. `ecr` - Amazon Elastic Container Registry. `github` - GitHub Container Registry. `gitlab` - GitLab Container Registry. `digitalOcean` - DigitalOcean Container Registry. `custom` - a self-hosted or third-party registry.","example":"dockerHub"},"username":{"type":"string","description":"Username or access key used to authenticate with the Docker registry","example":"my-docker-user"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","registry","username","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createDockerRegistryV3","summary":"Create Docker registry credential","tags":["Docker Registries"],"description":"Create a new Docker registry credential for the company. The credential is used to authenticate with private Docker registries when pulling images for deployments. The secret is encrypted before storage and never returned in API responses.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the Docker registry credential","example":"My Docker Hub"},"registry":{"default":"dockerHub","description":"Docker registry provider. `dockerHub` - Docker Hub. `gcr` - Google Container Registry. `ecr` - Amazon Elastic Container Registry. `github` - GitHub Container Registry. `gitlab` - GitLab Container Registry. `digitalOcean` - DigitalOcean Container Registry. `custom` - a self-hosted or third-party registry.","example":"dockerHub","type":"string","enum":["gcr","ecr","dockerHub","github","gitlab","digitalOcean","custom"]},"username":{"type":"string","pattern":"^(?=.{1,39}$)[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$","description":"Username or access key used to authenticate with the Docker registry","example":"my-docker-user"},"secret":{"type":"string","pattern":"^.{8,128}$","description":"Password or access token used to authenticate with the Docker registry. Stored encrypted at rest.","example":"my-secret-token"}},"required":["name","username","secret"],"additionalProperties":false}}}},"x-required-permissions":["REGISTRY_CREDENTIAL:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the Docker registry credential","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this credential","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Human-readable name for the Docker registry credential","example":"My Docker Hub"},"registry":{"type":"string","enum":["gcr","ecr","dockerHub","github","gitlab","digitalOcean","custom"],"description":"Docker registry provider. `dockerHub` - Docker Hub. `gcr` - Google Container Registry. `ecr` - Amazon Elastic Container Registry. `github` - GitHub Container Registry. `gitlab` - GitLab Container Registry. `digitalOcean` - DigitalOcean Container Registry. `custom` - a self-hosted or third-party registry.","example":"dockerHub"},"username":{"type":"string","description":"Username or access key used to authenticate with the Docker registry","example":"my-docker-user"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","name","registry","username","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/docker-registries/{id}":{"get":{"operationId":"getDockerRegistryV3","summary":"Get Docker registry credential","tags":["Docker Registries"],"description":"Retrieve the details of a Docker registry credential. The secret field is never included in responses for security reasons.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Docker registry credential identifier"}],"x-required-permissions":["REGISTRY_CREDENTIAL:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the Docker registry credential","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this credential","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Human-readable name for the Docker registry credential","example":"My Docker Hub"},"registry":{"type":"string","enum":["gcr","ecr","dockerHub","github","gitlab","digitalOcean","custom"],"description":"Docker registry provider. `dockerHub` - Docker Hub. `gcr` - Google Container Registry. `ecr` - Amazon Elastic Container Registry. `github` - GitHub Container Registry. `gitlab` - GitLab Container Registry. `digitalOcean` - DigitalOcean Container Registry. `custom` - a self-hosted or third-party registry.","example":"dockerHub"},"username":{"type":"string","description":"Username or access key used to authenticate with the Docker registry","example":"my-docker-user"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","name","registry","username","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateDockerRegistryV3","summary":"Update Docker registry credential","tags":["Docker Registries"],"description":"Update one or more properties of an existing Docker registry credential. Only the provided fields are updated. The secret is re-encrypted if changed.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"New name for the Docker registry credential","example":"My Docker Hub","type":"string","minLength":1,"maxLength":255},"registry":{"description":"Docker registry provider. `dockerHub` - Docker Hub. `gcr` - Google Container Registry. `ecr` - Amazon Elastic Container Registry. `github` - GitHub Container Registry. `gitlab` - GitLab Container Registry. `digitalOcean` - DigitalOcean Container Registry. `custom` - a self-hosted or third-party registry.","example":"dockerHub","type":"string","enum":["gcr","ecr","dockerHub","github","gitlab","digitalOcean","custom"]},"username":{"description":"New username or access key for the Docker registry","example":"my-docker-user","type":"string","pattern":"^(?=.{1,39}$)[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$"},"secret":{"description":"New password or access token for the Docker registry. Stored encrypted at rest.","example":"my-secret-token","type":"string","pattern":"^.{8,128}$"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Docker registry credential identifier"}],"x-required-permissions":["REGISTRY_CREDENTIAL:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the Docker registry credential","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this credential","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Human-readable name for the Docker registry credential","example":"My Docker Hub"},"registry":{"type":"string","enum":["gcr","ecr","dockerHub","github","gitlab","digitalOcean","custom"],"description":"Docker registry provider. `dockerHub` - Docker Hub. `gcr` - Google Container Registry. `ecr` - Amazon Elastic Container Registry. `github` - GitHub Container Registry. `gitlab` - GitLab Container Registry. `digitalOcean` - DigitalOcean Container Registry. `custom` - a self-hosted or third-party registry.","example":"dockerHub"},"username":{"type":"string","description":"Username or access key used to authenticate with the Docker registry","example":"my-docker-user"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the credential was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","name","registry","username","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteDockerRegistryV3","summary":"Delete Docker registry credential","tags":["Docker Registries"],"description":"Permanently delete a Docker registry credential. Applications using this credential will no longer be able to pull private images from the registry. Make sure no active applications depend on this credential before deleting it.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Docker registry credential identifier"}],"x-required-permissions":["REGISTRY_CREDENTIAL:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Docker registry credential deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage":{"post":{"operationId":"createObjectStorageV3","summary":"Create object storage bucket","tags":["Object storages"],"description":"Create a new R2 object storage bucket. The bucket is provisioned immediately with S3-compatible API credentials returned in the response. Optionally enable a public CDN domain by setting `public_access` to true.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2,"maxLength":64,"description":"Human-readable name for the new object storage bucket. Must be between 2 and 64 characters.","example":"My Bucket"},"location":{"description":"Geographic hint for where most data access occurs. Defaults to `enam` (Eastern North America). `apac` - Asia-Pacific. `eeur` - Eastern Europe. `enam` - Eastern North America. `oc` - Oceania. `weur` - Western Europe. `wnam` - Western North America.","example":"enam","type":"string","enum":["apac","eeur","enam","oc","weur","wnam"]},"jurisdiction":{"description":"Data residency jurisdiction. Defaults to `default` (no restriction). `default` - no jurisdiction restriction. `eu` - data stored exclusively in the EU. `fedramp` - FedRAMP-compliant storage.","example":"default","type":"string","enum":["default","eu","fedramp"]},"public_access":{"description":"Whether to enable a public CDN domain for this bucket. Defaults to false.","example":false,"type":"boolean"},"project_id":{"description":"Identifier of the project to group this bucket under. When omitted, the bucket is not assigned to any project.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["display_name"],"additionalProperties":false}}}},"x-required-permissions":["OBJECT_STORAGE:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this object storage bucket is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-bucket"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Bucket"},"location":{"type":"string","enum":["apac","eeur","enam","oc","weur","wnam"],"description":"Geographic hint for where most data access occurs. `apac` - Asia-Pacific. `eeur` - Eastern Europe. `enam` - Eastern North America. `oc` - Oceania. `weur` - Western Europe. `wnam` - Western North America.","example":"enam"},"jurisdiction":{"type":"string","enum":["default","eu","fedramp"],"description":"Data residency jurisdiction for the bucket. `default` - no jurisdiction restriction. `eu` - data stored exclusively in the EU. `fedramp` - FedRAMP-compliant storage.","example":"default"},"status":{"type":"string","enum":["active","deleting","deletionFailed"],"description":"Current lifecycle state of the bucket. `active` - bucket is available for use. `deleting` - deletion is in progress, the bucket is emptied and removed asynchronously. `deletionFailed` - the deletion job failed, contact support to retry.","example":"active"},"bucket_name":{"type":"string","description":"Name of the R2 bucket in Cloudflare","example":"my-bucket"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public CDN domain for accessing objects in the bucket. Null if public access is not enabled.","example":"my-bucket.sevalla.storage"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"S3-compatible API endpoint URL for programmatic access to the bucket","example":"https://account-id.r2.cloudflarestorage.com"},"access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Access key ID for S3-compatible API authentication. Only returned when the bucket is first created.","example":"access-key-id"},"secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Secret access key for S3-compatible API authentication. Only returned when the bucket is first created.","example":"secret-access-key"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","location","jurisdiction","status","bucket_name","domain","endpoint","access_key","secret_key","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"get":{"operationId":"listObjectStoragesV3","summary":"List object storage buckets","tags":["Object storages"],"description":"Retrieve a paginated list of all object storage buckets the authenticated API key has access to. Results are ordered by name and can be paginated using the `limit` and `offset` query parameters.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"}],"x-required-permissions":["OBJECT_STORAGE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-bucket"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Bucket"},"location":{"type":"string","enum":["apac","eeur","enam","oc","weur","wnam"],"description":"Geographic hint for where most data access occurs. `apac` - Asia-Pacific. `eeur` - Eastern Europe. `enam` - Eastern North America. `oc` - Oceania. `weur` - Western Europe. `wnam` - Western North America.","example":"enam"},"jurisdiction":{"type":"string","enum":["default","eu","fedramp"],"description":"Data residency jurisdiction for the bucket. `default` - no jurisdiction restriction. `eu` - data stored exclusively in the EU. `fedramp` - FedRAMP-compliant storage.","example":"default"},"status":{"type":"string","enum":["active","deleting","deletionFailed"],"description":"Current lifecycle state of the bucket. `active` - bucket is available for use. `deleting` - deletion is in progress, the bucket is emptied and removed asynchronously. `deletionFailed` - the deletion job failed, contact support to retry.","example":"active"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public CDN domain for accessing objects in the bucket. Null if public access is not enabled.","example":"my-bucket.sevalla.storage"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","display_name","location","jurisdiction","status","domain","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage/{id}":{"get":{"operationId":"getObjectStorageV3","summary":"Get object storage bucket","tags":["Object storages"],"description":"Retrieve the full details of an object storage bucket including the S3-compatible endpoint, access credentials, and CDN domain.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this object storage bucket is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-bucket"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Bucket"},"location":{"type":"string","enum":["apac","eeur","enam","oc","weur","wnam"],"description":"Geographic hint for where most data access occurs. `apac` - Asia-Pacific. `eeur` - Eastern Europe. `enam` - Eastern North America. `oc` - Oceania. `weur` - Western Europe. `wnam` - Western North America.","example":"enam"},"jurisdiction":{"type":"string","enum":["default","eu","fedramp"],"description":"Data residency jurisdiction for the bucket. `default` - no jurisdiction restriction. `eu` - data stored exclusively in the EU. `fedramp` - FedRAMP-compliant storage.","example":"default"},"status":{"type":"string","enum":["active","deleting","deletionFailed"],"description":"Current lifecycle state of the bucket. `active` - bucket is available for use. `deleting` - deletion is in progress, the bucket is emptied and removed asynchronously. `deletionFailed` - the deletion job failed, contact support to retry.","example":"active"},"bucket_name":{"type":"string","description":"Name of the R2 bucket in Cloudflare","example":"my-bucket"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public CDN domain for accessing objects in the bucket. Null if public access is not enabled.","example":"my-bucket.sevalla.storage"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"S3-compatible API endpoint URL for programmatic access to the bucket","example":"https://account-id.r2.cloudflarestorage.com"},"access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Access key ID for S3-compatible API authentication. Only returned when the bucket is first created.","example":"access-key-id"},"secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Secret access key for S3-compatible API authentication. Only returned when the bucket is first created.","example":"secret-access-key"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","location","jurisdiction","status","bucket_name","domain","endpoint","access_key","secret_key","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateObjectStorageV3","summary":"Update object storage bucket","tags":["Object storages"],"description":"Update one or more properties of an existing object storage bucket. Only include the fields you want to change - omitted fields are left unchanged.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"Human-readable name shown in the dashboard and API responses","example":"My Bucket","type":"string","minLength":2,"maxLength":64},"project_id":{"description":"Identifier of the project to assign this bucket to. Set to null to remove the project assignment.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this object storage bucket is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-bucket"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Bucket"},"location":{"type":"string","enum":["apac","eeur","enam","oc","weur","wnam"],"description":"Geographic hint for where most data access occurs. `apac` - Asia-Pacific. `eeur` - Eastern Europe. `enam` - Eastern North America. `oc` - Oceania. `weur` - Western Europe. `wnam` - Western North America.","example":"enam"},"jurisdiction":{"type":"string","enum":["default","eu","fedramp"],"description":"Data residency jurisdiction for the bucket. `default` - no jurisdiction restriction. `eu` - data stored exclusively in the EU. `fedramp` - FedRAMP-compliant storage.","example":"default"},"status":{"type":"string","enum":["active","deleting","deletionFailed"],"description":"Current lifecycle state of the bucket. `active` - bucket is available for use. `deleting` - deletion is in progress, the bucket is emptied and removed asynchronously. `deletionFailed` - the deletion job failed, contact support to retry.","example":"active"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public CDN domain for accessing objects in the bucket. Null if public access is not enabled.","example":"my-bucket.sevalla.storage"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","location","jurisdiction","status","domain","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteObjectStorageV3","summary":"Delete object storage bucket","tags":["Object storages"],"description":"Schedule permanent deletion of an object storage bucket. This endpoint marks the bucket for deletion and queues a background job that empties all objects, revokes API credentials, and removes the bucket. The operation runs asynchronously and is irreversible. Poll the bucket to track its status - it will be reported as `deleting` while the job runs and disappears once the deletion completes. A bucket that is still used as a database backup target cannot be deleted and returns 409 until that backup target is removed.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:DELETE"],"responses":{"202":{"description":"Object storage bucket deletion has been scheduled"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Conflict"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":409},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage/{id}/domain":{"post":{"operationId":"createObjectStorageDomainV3","summary":"Enable CDN domain","tags":["Object storages"],"description":"Enable a public CDN domain for the object storage bucket. Objects in the bucket will be accessible via this domain. Fails if a domain is already enabled.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public CDN domain for accessing objects in the bucket. Null if public access is not enabled.","example":"my-bucket.sevalla.storage"}},"required":["id","domain"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteObjectStorageDomainV3","summary":"Disable CDN domain","tags":["Object storages"],"description":"Disable the public CDN domain for the object storage bucket. Objects will no longer be accessible via the domain URL.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"204":{"description":"CDN domain disabled successfully"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage/{id}/cache/purge":{"post":{"operationId":"purgeObjectStorageCacheV3","summary":"Purge CDN cache","tags":["Object storages"],"description":"Purge all cached content for the bucket's public CDN domain at the edge. Use this after replacing or updating objects so visitors get the latest versions instead of stale cached copies. Purging affects only the bucket's CDN domain and takes effect within a few seconds. If the bucket has no CDN domain enabled, there is nothing cached and the request succeeds without doing anything.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the purge request was processed successfully. Returns true even when the bucket has no CDN domain enabled, in which case there is nothing to purge."}},"required":["success"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage/{id}/cors-policies":{"get":{"operationId":"listObjectStorageCorsPoliciesV3","summary":"List CORS policies","tags":["Object storages"],"description":"Retrieve all CORS policy rules configured for the object storage bucket. Rules without an ID are automatically assigned one.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the CORS policy rule","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"methods":{"type":"array","items":{"type":"string","enum":["GET","PUT","POST","DELETE","HEAD"]},"description":"HTTP methods allowed by this CORS rule","example":["GET","PUT"]},"origins":{"type":"array","items":{"type":"string"},"description":"Origins allowed by this CORS rule. Use \"*\" to allow all origins.","example":["https://example.com"]},"headers":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"HTTP headers allowed in CORS requests. Null if no specific headers are configured.","example":["Content-Type"]}},"required":["id","methods","origins","headers"],"additionalProperties":false},"description":"List of CORS policy rules"}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createObjectStorageCorsPolicyV3","summary":"Create CORS policy","tags":["Object storages"],"description":"Add a new CORS policy rule to the object storage bucket. The rule is appended to any existing rules.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["GET","PUT","POST","DELETE","HEAD"]},"description":"HTTP methods allowed by this CORS rule. At least one method is required. `GET` - read objects. `PUT` - upload objects. `POST` - create objects. `DELETE` - remove objects. `HEAD` - retrieve object metadata.","example":["GET","PUT"]},"origins":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":250},"description":"Origins allowed by this CORS rule. Use \"*\" to allow all origins. Maximum 100 origins.","example":["https://example.com"]},"headers":{"description":"HTTP headers allowed in CORS requests. Maximum 100 headers.","example":["Content-Type"],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":250}}},"required":["methods","origins"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"CORS policy created"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage/{id}/cors-policies/{cors_policy_id}":{"patch":{"operationId":"updateObjectStorageCorsPolicyV3","summary":"Update CORS policy","tags":["Object storages"],"description":"Update an existing CORS policy rule on the object storage bucket. All fields must be provided as the rule is fully replaced.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["GET","PUT","POST","DELETE","HEAD"]},"description":"HTTP methods allowed by this CORS rule. `GET` - read objects. `PUT` - upload objects. `POST` - create objects. `DELETE` - remove objects. `HEAD` - retrieve object metadata.","example":["GET","PUT"]},"origins":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":250},"description":"Origins allowed by this CORS rule. Use \"*\" to allow all origins. Maximum 100 origins.","example":["https://example.com"]},"headers":{"description":"HTTP headers allowed in CORS requests. Maximum 100 headers.","example":["Content-Type"],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":250}}},"required":["methods","origins"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"},{"schema":{"type":"string","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"cors_policy_id","required":true,"description":"CORS policy rule identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"CORS policy updated"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteObjectStorageCorsPolicyV3","summary":"Delete CORS policy","tags":["Object storages"],"description":"Remove a CORS policy rule from the object storage bucket. If this is the last rule, the entire CORS configuration is removed.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"},{"schema":{"type":"string","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"cors_policy_id","required":true,"description":"CORS policy rule identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"204":{"description":"CORS policy deleted successfully"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage/{id}/objects":{"get":{"operationId":"listObjectStorageObjectsV3","summary":"List objects","tags":["Object storages"],"description":"List objects in the bucket using cursor-based pagination. Use the `prefix` and `delimiter` parameters to browse the bucket like a file system.","parameters":[{"schema":{"example":"images/","type":"string"},"in":"query","name":"prefix","required":false,"description":"Filter objects by key prefix"},{"schema":{"example":"/","type":"string"},"in":"query","name":"delimiter","required":false,"description":"Character used to group keys into common prefixes (typically \"/\")"},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Continuation token from a previous response for pagination"},{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false,"description":"Maximum number of objects to return per page. Maximum 200."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Full object key (path) within the bucket. Folder prefixes end with \"/\".","example":"images/photo.jpg"},"type":{"type":"string","enum":["folder","file","image","video","audio","document"],"description":"Object type inferred from the file extension. `folder` - a prefix acting as a folder. `file` - generic file. `image` - image file (jpg, png, etc). `video` - video file (mp4, mov, etc). `audio` - audio file (mp3, wav, etc). `document` - document file (pdf, doc, etc).","example":"file"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"MIME content type of the object","example":"image/jpeg"},"size":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Object size in bytes","example":1024},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 8601 timestamp of the last modification","example":"2024-01-01T00:00:00.000Z"},"e_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Entity tag for the object, used for cache validation","example":"\"abc123\""}},"required":["key","type","content_type","size","updated_at","e_tag"],"additionalProperties":false},"description":"List of objects"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Continuation token for the next page. Null if there are no more results."}},"required":["data","cursor"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteObjectStorageObjectsV3","summary":"Delete objects","tags":["Object storages"],"description":"Delete one or more objects from the bucket by their keys. Objects are deleted in batches of up to 1000. Partial failures are logged but do not cause the request to fail.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string"},"description":"Object keys to delete. Maximum 1000 keys per request.","example":["images/photo.jpg","docs/readme.txt"]}},"required":["keys"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"204":{"description":"Objects deleted successfully"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/object-storage/{id}/rotate-credentials":{"post":{"operationId":"rotateObjectStorageCredentialsV3","summary":"Rotate object storage credentials","tags":["Object storages"],"description":"Generate a new access key and secret key for the object storage bucket. The previous credentials can optionally stay valid for a grace period (up to 168 hours) so clients can migrate without downtime. When the grace period elapses, the previous credentials stop working. The new credentials are returned in the response and are the only chance to capture them.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"old_keys_ttl_hours":{"default":0,"description":"Number of hours to keep the previous access and secret keys valid after rotation (0-168). Set to 0 to immediately invalidate the previous credentials. Use a non-zero value to give clients time to migrate to the new credentials.","example":24,"type":"integer","minimum":0,"maximum":168}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Object storage bucket identifier"}],"x-required-permissions":["OBJECT_STORAGE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this object storage bucket","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this object storage bucket is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-bucket"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Bucket"},"location":{"type":"string","enum":["apac","eeur","enam","oc","weur","wnam"],"description":"Geographic hint for where most data access occurs. `apac` - Asia-Pacific. `eeur` - Eastern Europe. `enam` - Eastern North America. `oc` - Oceania. `weur` - Western Europe. `wnam` - Western North America.","example":"enam"},"jurisdiction":{"type":"string","enum":["default","eu","fedramp"],"description":"Data residency jurisdiction for the bucket. `default` - no jurisdiction restriction. `eu` - data stored exclusively in the EU. `fedramp` - FedRAMP-compliant storage.","example":"default"},"status":{"type":"string","enum":["active","deleting","deletionFailed"],"description":"Current lifecycle state of the bucket. `active` - bucket is available for use. `deleting` - deletion is in progress, the bucket is emptied and removed asynchronously. `deletionFailed` - the deletion job failed, contact support to retry.","example":"active"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Public CDN domain for accessing objects in the bucket. Null if public access is not enabled.","example":"my-bucket.sevalla.storage"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"S3-compatible API endpoint URL for programmatic access to the bucket","example":"https://account-id.r2.cloudflarestorage.com"},"access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Access key ID for S3-compatible API authentication. Only returned when the bucket is first created.","example":"access-key-id"},"secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Secret access key for S3-compatible API authentication. Only returned when the bucket is first created.","example":"secret-access-key"},"old_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous access key ID that is still valid until old_keys_expired_at, returned when credentials were rotated with a grace period. Null once the grace period has elapsed.","example":"old-access-key-id"},"old_secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous secret access key that is still valid until old_keys_expired_at, returned when credentials were rotated with a grace period. Null once the grace period has elapsed.","example":"old-secret-access-key"},"old_keys_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the previous credentials stop working, in ISO 8601 format. Null if no grace period is active.","example":"2025-01-31T00:00:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the object storage bucket was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","location","jurisdiction","status","domain","endpoint","access_key","secret_key","old_access_key","old_secret_key","old_keys_expired_at","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines":{"get":{"operationId":"listPipelinesV3","summary":"List pipelines","tags":["Pipelines"],"description":"Retrieve a paginated list of all pipelines in the company. Each pipeline includes a summary of its stages. Use the `type`, `project_id`, and `search` query parameters to narrow down the results - multiple filters combine with AND.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"example":"trunk","type":"string","enum":["trunk","branch"]},"in":"query","name":"type","required":false,"description":"Return only pipelines of this type. `trunk` - all stages share the same Git repository and branch configuration. `branch` - each stage can have its own branch."},{"schema":{"example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"project_id","required":false,"description":"Return only pipelines that belong to this project."},{"schema":{"example":"my-app","type":"string","minLength":1,"maxLength":100},"in":"query","name":"search","required":false,"description":"Return only pipelines whose name or display name contains this text. Matching is case-insensitive."}],"x-required-permissions":["PIPELINE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the pipeline shown in the dashboard","example":"My Pipeline"},"type":{"type":"string","enum":["trunk","branch"],"description":"Pipeline type. `trunk` - all stages share the same Git repository and branch configuration. `branch` - each stage can have its own branch.","example":"trunk"},"stages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline stage","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the stage shown in the dashboard","example":"Production"},"type":{"type":"string","enum":["preview","standard","prod"],"description":"Stage type. `standard` - regular deployment stage. `prod` - production stage. `preview` - ephemeral preview environment stage for pull request previews.","example":"standard"},"order":{"type":"integer","minimum":0,"maximum":50,"description":"Position of the stage in the pipeline, starting from 0. Lower numbers appear first.","example":1}},"required":["id","display_name","type","order"],"additionalProperties":false},"description":"Pipeline stages ordered by position"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","display_name","type","stages","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createPipelineV3","summary":"Create pipeline","tags":["Pipelines"],"description":"Create a new pipeline with two default stages (Dev and Production). Pipelines let you organize applications into deployment stages and promote builds between them.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Display name for the pipeline","example":"My Pipeline"},"type":{"type":"string","enum":["trunk","branch"],"description":"Pipeline type. `trunk` - all stages share the same Git repository and branch configuration. `branch` - each stage can have its own branch.","example":"trunk"},"project_id":{"description":"Assign the pipeline to a project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["display_name","type"],"additionalProperties":false}}}},"x-required-permissions":["PIPELINE:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this pipeline","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this pipeline is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the pipeline shown in the dashboard","example":"My Pipeline"},"type":{"type":"string","enum":["trunk","branch"],"description":"Pipeline type. `trunk` - all stages share the same Git repository and branch configuration. `branch` - each stage can have its own branch.","example":"trunk"},"stages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline stage","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the stage shown in the dashboard","example":"Production"},"type":{"type":"string","enum":["preview","standard","prod"],"description":"Stage type. `standard` - regular deployment stage. `prod` - production stage. `preview` - ephemeral preview environment stage for pull request previews.","example":"standard"},"order":{"type":"integer","minimum":0,"maximum":50,"description":"Position of the stage in the pipeline, starting from 0. Lower numbers appear first.","example":1}},"required":["id","display_name","type","order"],"additionalProperties":false},"description":"Pipeline stages created by default (Dev and Production)"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","display_name","type","stages","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}":{"get":{"operationId":"getPipelineV3","summary":"Get pipeline","tags":["Pipelines"],"description":"Retrieve the full details of a pipeline including all its stages. Use this to inspect the pipeline configuration, stage ordering, and preview settings.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this pipeline","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this pipeline is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the pipeline shown in the dashboard","example":"My Pipeline"},"type":{"type":"string","enum":["trunk","branch"],"description":"Pipeline type. `trunk` - all stages share the same Git repository and branch configuration. `branch` - each stage can have its own branch.","example":"trunk"},"stages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline stage","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"pipeline_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the pipeline this stage belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the stage shown in the dashboard","example":"Production"},"type":{"type":"string","enum":["preview","standard","prod"],"description":"Stage type. `standard` - regular deployment stage. `prod` - production stage. `preview` - ephemeral preview environment stage for pull request previews.","example":"standard"},"order":{"type":"integer","minimum":0,"maximum":50,"description":"Position of the stage in the pipeline, starting from 0. Lower numbers appear first.","example":1},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch associated with this stage. Used to filter deployments by branch.","example":"main"},"auto_create_app":{"type":"boolean","description":"Whether to automatically create a preview app when a pull request is opened. Only applies to preview stages.","example":false},"delete_stale_apps":{"type":"boolean","description":"Whether to automatically delete preview apps that have not been deployed for longer than the stale app threshold. Only applies to preview stages.","example":false},"stale_app_days":{"type":"integer","minimum":1,"maximum":365,"description":"Number of days after the last deployment before a preview app is considered stale and eligible for automatic deletion. Only applies when delete_stale_apps is enabled.","example":5},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the stage was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the stage was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","pipeline_id","display_name","type","order","branch","auto_create_app","delete_stale_apps","stale_app_days","created_at","updated_at"],"additionalProperties":false},"description":"Pipeline stages ordered by position"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","display_name","type","stages","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updatePipelineV3","summary":"Update pipeline","tags":["Pipelines"],"description":"Update one or more properties of an existing pipeline. You can change the display name, type, project assignment, or reorder stages in a single request.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"New display name for the pipeline","example":"My Pipeline","type":"string","minLength":1,"maxLength":255},"type":{"description":"Pipeline type. `trunk` - all stages share the same Git repository and branch configuration. `branch` - each stage can have its own branch.","example":"trunk","type":"string","enum":["trunk","branch"]},"stage_order":{"description":"Reorder stages by providing each stage ID with its new position","type":"array","items":{"type":"object","properties":{"stage_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Stage identifier","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"order":{"type":"integer","minimum":0,"maximum":50,"description":"New position for the stage","example":1}},"required":["stage_id","order"]}},"project_id":{"description":"Assign the pipeline to a project, or pass null to remove the project assignment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this pipeline","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this pipeline is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the pipeline shown in the dashboard","example":"My Pipeline"},"type":{"type":"string","enum":["trunk","branch"],"description":"Pipeline type. `trunk` - all stages share the same Git repository and branch configuration. `branch` - each stage can have its own branch.","example":"trunk"},"stages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline stage","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the stage shown in the dashboard","example":"Production"},"type":{"type":"string","enum":["preview","standard","prod"],"description":"Stage type. `standard` - regular deployment stage. `prod` - production stage. `preview` - ephemeral preview environment stage for pull request previews.","example":"standard"},"order":{"type":"integer","minimum":0,"maximum":50,"description":"Position of the stage in the pipeline, starting from 0. Lower numbers appear first.","example":1}},"required":["id","display_name","type","order"],"additionalProperties":false},"description":"Pipeline stages ordered by position"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the pipeline was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","display_name","type","stages","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deletePipelineV3","summary":"Delete pipeline","tags":["Pipelines"],"description":"Permanently delete a pipeline and all its stages. Applications in the pipeline are unlinked but not deleted. Preview apps are queued for deletion.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Pipeline is being deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/promote":{"post":{"operationId":"promotePipelineV3","summary":"Promote pipeline","tags":["Pipelines"],"description":"Promote an application from one pipeline stage to another by copying the latest successful deployment from the source app to one or more target apps. The target apps receive a new deployment that reuses the source build image without rebuilding.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source_app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application to promote from. The latest successful deployment of this app will be used.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"target_app_ids":{"minItems":1,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"description":"Identifiers of the applications to promote to. Each target app will receive a new deployment using the source app build.","example":["fb5e5168-4281-4bec-94c5-0d1584e9e657"]}},"required":["source_app_id","target_app_ids"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"target_app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the target application that received the promotion","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"deployment_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the new deployment created on the target application","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["target_app_id","deployment_id"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/stages":{"post":{"operationId":"createPipelineStageV3","summary":"Create pipeline stage","tags":["Pipelines"],"description":"Create a new stage in a pipeline. The stage is inserted at the specified position and existing stages are shifted up. New stages are always created with the \"standard\" type.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the new stage","example":"Staging"},"insert_before":{"type":"integer","minimum":0,"maximum":50,"description":"Position to insert the stage at. Existing stages at this position and above are shifted up.","example":2},"branch":{"description":"Git branch to associate with this stage. Used in branch-type pipelines.","example":"staging","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["display_name","insert_before"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the pipeline stage","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"pipeline_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the pipeline this stage belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name for the stage shown in the dashboard","example":"Production"},"type":{"type":"string","enum":["preview","standard","prod"],"description":"Stage type. `standard` - regular deployment stage. `prod` - production stage. `preview` - ephemeral preview environment stage for pull request previews.","example":"standard"},"order":{"type":"integer","minimum":0,"maximum":50,"description":"Position of the stage in the pipeline, starting from 0. Lower numbers appear first.","example":1},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch associated with this stage. Used to filter deployments by branch.","example":"main"},"auto_create_app":{"type":"boolean","description":"Whether to automatically create a preview app when a pull request is opened. Only applies to preview stages.","example":false},"delete_stale_apps":{"type":"boolean","description":"Whether to automatically delete preview apps that have not been deployed for longer than the stale app threshold. Only applies to preview stages.","example":false},"stale_app_days":{"type":"integer","minimum":1,"maximum":365,"description":"Number of days after the last deployment before a preview app is considered stale and eligible for automatic deletion. Only applies when delete_stale_apps is enabled.","example":5},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the stage was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the stage was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","pipeline_id","display_name","type","order","branch","auto_create_app","delete_stale_apps","stale_app_days","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/stages/{stage_id}":{"delete":{"operationId":"deletePipelineStageV3","summary":"Delete pipeline stage","tags":["Pipelines"],"description":"Delete a stage from a pipeline. Applications in the stage are unlinked but not deleted. Remaining stages are automatically reordered to fill the gap.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"stage_id","required":true,"description":"Stage identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Pipeline stage deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/stages/{stage_id}/apps":{"post":{"operationId":"addAppToPipelineStageV3","summary":"Add application to pipeline stage","tags":["Pipelines"],"description":"Add an existing application to a pipeline stage. The application must belong to the same company as the pipeline and must not already be assigned to another pipeline stage. The application inherits the project assignment from the pipeline.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"app_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the application to add to the stage. The application must belong to the same company and must not already be in a pipeline.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["app_id"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"stage_id","required":true,"description":"Stage identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Application added to pipeline stage"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/stages/{stage_id}/apps/{app_id}":{"delete":{"operationId":"removeAppFromPipelineStageV3","summary":"Remove application from pipeline stage","tags":["Pipelines"],"description":"Remove an application from a pipeline stage. The application is unlinked from the stage but not deleted. It can be added to a different stage or used independently.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"stage_id","required":true,"description":"Stage identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"app_id","required":true,"description":"Application identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Application removed from pipeline stage"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/preview/enable":{"post":{"operationId":"enablePipelinePreviewV3","summary":"Enable pipeline preview","tags":["Pipelines"],"description":"Enable preview apps for a pipeline. When enabled, the pipeline can create ephemeral preview environments for pull requests. If the pipeline does not have a Git repository configured, you must provide a repo_url to connect one. Preview app settings are configured in the dashboard, so turn on auto_create_app afterwards with the update preview settings endpoint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repo_url":{"description":"Git repository URL to connect to the pipeline. Required if the pipeline does not already have a repository configured.","example":"https://github.com/user/repo","type":"string","format":"uri"},"auto_create_app":{"default":false,"description":"Automatically create a preview app when a pull request is opened. Must be false here, because the preview stage is created without preview app settings (cluster, processes, environment variables) and those can only be configured in the dashboard. Configure the preview app there, then turn this on with the update preview settings endpoint. Returns 400 when true.","example":false,"type":"boolean"},"delete_stale_apps":{"default":false,"description":"Automatically delete preview apps that have not been deployed for longer than the stale app threshold","example":false,"type":"boolean"},"stale_app_days":{"default":5,"description":"Number of days after the last deployment before a preview app is considered stale","example":5,"type":"integer","minimum":1,"maximum":365}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Pipeline preview stage has been enabled"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/preview/disable":{"post":{"operationId":"disablePipelinePreviewV3","summary":"Disable pipeline preview","tags":["Pipelines"],"description":"Disable preview apps for a pipeline. All existing preview apps in the preview stage are queued for deletion and the preview stage is removed.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Pipeline preview stage has been disabled"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/pipelines/{id}/preview":{"put":{"operationId":"updatePipelinePreviewSettingsV3","summary":"Update pipeline preview settings","tags":["Pipelines"],"description":"Update the preview stage configuration for a pipeline. You can change the auto-create behavior, stale app cleanup settings, or switch the connected Git repository. Turning on auto_create_app requires the preview app settings to be configured in the dashboard first.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repo_url":{"description":"Git repository URL. When provided and different from the current repository, the pipeline switches to the new repository.","example":"https://github.com/user/repo","type":"string","format":"uri"},"auto_create_app":{"description":"Automatically create a preview app when a pull request is opened. Turning this on requires the preview app settings (cluster, processes, environment variables) to be configured in the dashboard first. Returns 400 when they are missing.","example":true,"type":"boolean"},"delete_stale_apps":{"description":"Automatically delete preview apps that have not been deployed for longer than the stale app threshold","example":true,"type":"boolean"},"stale_app_days":{"description":"Number of days after the last deployment before a preview app is considered stale","example":7,"type":"integer","minimum":1,"maximum":365}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Pipeline identifier"}],"x-required-permissions":["PIPELINE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Pipeline preview settings updated"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/resources/clusters":{"get":{"operationId":"listClustersV3","summary":"List clusters","tags":["Resources"],"description":"Retrieve all available clusters (data center locations) where applications and databases can be deployed. This is reference data and does not require specific resource permissions.","responses":{"200":{"description":"List of available clusters","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the cluster","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Internal name of the cluster","example":"us-central1"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable name for the cluster shown in the dashboard","example":"Iowa, USA"},"location":{"type":"string","description":"Cloud region where the cluster is located","example":"us-central1"},"provider":{"type":"string","enum":["gcp","oci"],"description":"Cloud provider running the cluster. `gcp` - Google Cloud Platform. `oci` - Oracle Cloud Infrastructure.","example":"gcp"}},"required":["id","name","display_name","location","provider"],"additionalProperties":false},"description":"List of available clusters"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/resources/database-resource-types":{"get":{"operationId":"listDatabaseResourceTypesV3","summary":"List database resource types","tags":["Resources"],"description":"Retrieve all available database resource types (machine sizes) that can be assigned to databases. This is reference data and does not require specific resource permissions.","responses":{"200":{"description":"List of available database resource types","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the database resource type","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Name of the resource type (machine size)","example":"db-s1"},"cpu_limit":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Maximum CPU allocation in millicores","example":1000},"memory_limit":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Maximum memory allocation in megabytes","example":1024},"storage_limit":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Maximum storage allocation in megabytes","example":10000}},"required":["id","name","cpu_limit","memory_limit","storage_limit"],"additionalProperties":false},"description":"List of available database resource types"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/resources/database-versions":{"get":{"operationId":"listDatabaseVersionsV3","summary":"List database versions","tags":["Resources"],"description":"List the database engine versions you can use when creating a database on a cluster. Supported versions differ between clusters, so pick the cluster first and pass one of the returned versions as `version` to the Create Database endpoint. This is reference data and does not require specific resource permissions.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"query","name":"cluster_id","required":true,"description":"Identifier of the cluster the database will be created on. Supported versions depend on the cluster. Use the List Clusters endpoint to retrieve available options."},{"schema":{"example":"postgresql","type":"string","enum":["postgresql","mariadb","mysql","redis","valkey"]},"in":"query","name":"type","required":false,"description":"Only return the versions of this database type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey. Returns all types when omitted."}],"responses":{"200":{"description":"Supported database versions per database type","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["postgresql","mariadb","mysql","redis","valkey"],"description":"Database engine type. `postgresql` - PostgreSQL. `mariadb` - MariaDB. `mysql` - MySQL. `redis` - Redis. `valkey` - Valkey.","example":"postgresql"},"versions":{"type":"array","items":{"type":"string"},"description":"Versions that can be passed as `version` when creating a database of this type on the cluster, from oldest to newest","example":["16","17","18"]}},"required":["type","versions"],"additionalProperties":false},"description":"Supported database versions per database type"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/resources/process-resource-types":{"get":{"operationId":"listProcessResourceTypesV3","summary":"List process resource types","tags":["Resources"],"description":"Retrieve all available process resource types (machine sizes) that can be assigned to application processes. This is reference data and does not require specific resource permissions.","responses":{"200":{"description":"List of available process resource types","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the process resource type","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Name of the resource type (machine size)","example":"s1"},"cpu_limit":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Maximum CPU allocation in millicores","example":1000},"memory_limit":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Maximum memory allocation in megabytes","example":1024},"category":{"type":"string","enum":["hobby","standard","cpuOptimized","memoryOptimized"],"description":"Resource type category. `hobby` - limited resources for development and testing. `standard` - balanced resources for production workloads. `cpuOptimized` - higher CPU allocation for compute-heavy workloads. `memoryOptimized` - higher memory allocation for memory-heavy workloads.","example":"standard"}},"required":["id","name","cpu_limit","memory_limit","category"],"additionalProperties":false},"description":"List of available process resource types"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/resources/rbac/api-key-permissions":{"get":{"operationId":"listApiKeyPermissionsV3","summary":"List API key permissions","tags":["Resources"],"description":"Retrieve all available API key permissions. Permissions define specific actions on specific resource types that can be granted to API keys. This is reference data and does not require specific resource permissions.","responses":{"200":{"description":"List of available API key permissions","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the permission","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Name of the permission","example":"app:read"},"description":{"type":"string","description":"Human-readable description of what this permission allows","example":"View applications"},"resource":{"type":"string","enum":["APP","PIPELINE","DATABASE","STATIC_SITE","LOAD_BALANCER","OBJECT_STORAGE","BILLING","COMPANY","PROJECT","WEBHOOK","API_KEY","REGISTRY_CREDENTIAL"],"description":"Resource type this permission applies to. `APP` - applications. `PIPELINE` - pipelines. `DATABASE` - databases. `STATIC_SITE` - static sites. `LOAD_BALANCER` - load balancers. `OBJECT_STORAGE` - object storage. `BILLING` - billing. `COMPANY` - company settings. `PROJECT` - projects. `WEBHOOK` - webhooks. `API_KEY` - API keys. `REGISTRY_CREDENTIAL` - Docker registry credentials.","example":"APP"},"action":{"type":"string","enum":["CREATE","READ","UPDATE","DELETE"],"description":"Action this permission allows on the resource. `CREATE` - create new resources. `READ` - view resources. `UPDATE` - modify resources. `DELETE` - remove resources.","example":"READ"}},"required":["id","name","description","resource","action"],"additionalProperties":false},"description":"List of available API key permissions"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/resources/rbac/api-key-roles":{"get":{"operationId":"listApiKeyRolesV3","summary":"List API key roles","tags":["Resources"],"description":"Retrieve all available API key roles. Roles are predefined permission sets that can be assigned to API keys. This is reference data and does not require specific resource permissions.","responses":{"200":{"description":"List of available API key roles","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the role","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Name of the role","example":"Developer"},"description":{"type":"string","description":"Human-readable description of what this role allows","example":"Can manage applications and databases"},"permissions":{"type":"array","items":{"type":"string"},"description":"List of permission IDs granted by this role","example":["fb5e5168-4281-4bec-94c5-0d1584e9e657"]}},"required":["id","name","description","permissions"],"additionalProperties":false},"description":"List of available API key roles"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites":{"get":{"operationId":"listStaticSitesV3","summary":"List static sites","tags":["Static sites"],"description":"Retrieve a paginated list of all static sites the authenticated API key has access to. Results can be paginated using the `limit` and `offset` query parameters.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the static site","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-static-site"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Static Site"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deploymentCancelled","deleting","deletionFailed"]},{"type":"null"}],"description":"Current status of the static site reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"}},"required":["id","name","display_name","status"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createStaticSiteV3","summary":"Create static site","tags":["Static sites"],"description":"Create a new static site from a Git repository. An initial deployment is triggered automatically after creation. If Sevalla cannot access the Git repository, the request fails with a 400 error that explains why and links to the page where access can be granted (for example the repository access settings of the GitHub App used by Sevalla).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2,"maxLength":64,"description":"Human-readable name for the new static site. Must be between 2 and 64 characters.","example":"My Static Site"},"repo_url":{"type":"string","maxLength":2048,"description":"Full URL of the Git repository containing the static site source code","example":"https://github.com/user/static-site"},"default_branch":{"type":"string","minLength":1,"maxLength":255,"description":"Git branch used for deployments","example":"main"},"source":{"default":"privateGit","description":"Where the static site source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL.","example":"privateGit","type":"string","enum":["privateGit","publicGit"]},"git_type":{"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Required for private git sources when the provider cannot be auto-detected.","example":"github","type":"string","enum":["github","bitbucket","gitlab"]},"auto_deploy":{"description":"Enable or disable automatic deployments on every push to the default branch","example":true,"type":"boolean"},"is_preview_enabled":{"description":"Enable or disable preview deployments for pull requests targeting the default branch","example":false,"type":"boolean"},"install_command":{"description":"Command used to install dependencies before building the static site","example":"npm install","type":"string","maxLength":1024},"build_command":{"description":"Command used to build the static site","example":"npm run build","type":"string","maxLength":1024},"published_directory":{"description":"Directory containing the built files to publish","example":"dist","type":"string","maxLength":500},"root_directory":{"description":"Root directory of the project within the repository","example":"/","type":"string","maxLength":500},"node_version":{"description":"Node.js version used to build the static site","example":"20","type":"string","maxLength":20},"index_file":{"description":"Custom index file served as the entry point for the static site","example":"index.html","type":"string","maxLength":255},"error_file":{"description":"Custom error page file served when a requested path is not found","example":"404.html","type":"string","maxLength":255},"project_id":{"description":"Identifier of the project to group this static site under. When omitted, the static site is not assigned to any project.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"allow_deploy_paths":{"description":"Glob patterns for file paths that trigger a deployment. When set, only commits touching these paths trigger auto deploy. Mutually exclusive with ignore_deploy_paths.","example":["src/**","package.json"],"type":"array","items":{"type":"string"}},"ignore_deploy_paths":{"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy. Mutually exclusive with allow_deploy_paths.","example":["docs/**","README.md"],"type":"array","items":{"type":"string"}}},"required":["display_name","repo_url","default_branch"],"additionalProperties":false}}}},"x-required-permissions":["STATIC_SITE:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the static site","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this static site","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this static site is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-static-site"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Static Site"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deploymentCancelled","deleting","deletionFailed"]},{"type":"null"}],"description":"Current status of the static site reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"},"source":{"type":"string","enum":["privateGit","publicGit"],"description":"Where the static site source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL.","example":"privateGit"},"repo_url":{"type":"string","description":"Full URL of the Git repository","example":"https://github.com/user/static-site"},"default_branch":{"type":"string","description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main"},"auto_deploy":{"type":"boolean","description":"When enabled, a new deployment is automatically triggered on every push to the default branch","example":true},"is_preview_enabled":{"type":"boolean","description":"When enabled, preview deployments are created for pull requests targeting the default branch","example":false},"git_lfs_enabled":{"type":"boolean","description":"When enabled, Git LFS objects are fetched during the source checkout step of a deployment. Enabled by default. Disable this to skip LFS downloads and speed up checkout when the repository contains LFS files that are not needed at build time.","example":true},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for public git sources.","example":"github"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary hostname assigned to the static site","example":"my-site.sevalla.app"},"install_command":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Command used to install dependencies before building the static site","example":"npm install"},"build_command":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Command used to build the static site","example":"npm run build"},"published_directory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Directory containing the built files to publish","example":"dist"},"root_directory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root directory of the project within the repository","example":"/"},"node_version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Node.js version used to build the static site","example":"20"},"index_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom index file served as the entry point for the static site","example":"index.html"},"error_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom error page file served when a requested path is not found","example":"404.html"},"allow_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths that trigger a deployment when changed. When set, only commits touching these paths will trigger auto deploy.","example":["src/**","package.json"]},"ignore_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy.","example":["docs/**","README.md"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the static site was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the static site was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","status","source","repo_url","default_branch","auto_deploy","is_preview_enabled","git_lfs_enabled","git_type","hostname","install_command","build_command","published_directory","root_directory","node_version","index_file","error_file","allow_deploy_paths","ignore_deploy_paths","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}":{"get":{"operationId":"getStaticSiteV3","summary":"Get static site","tags":["Static sites"],"description":"Retrieve the full details of a static site including its source configuration, build settings, and current status.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the static site","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the company that owns this static site","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this static site is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in URLs and internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-static-site"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Static Site"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deploymentCancelled","deleting","deletionFailed"]},{"type":"null"}],"description":"Current status of the static site reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"},"source":{"type":"string","enum":["privateGit","publicGit"],"description":"Where the static site source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL.","example":"privateGit"},"repo_url":{"type":"string","description":"Full URL of the Git repository","example":"https://github.com/user/static-site"},"default_branch":{"type":"string","description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main"},"auto_deploy":{"type":"boolean","description":"When enabled, a new deployment is automatically triggered on every push to the default branch","example":true},"is_preview_enabled":{"type":"boolean","description":"When enabled, preview deployments are created for pull requests targeting the default branch","example":false},"git_lfs_enabled":{"type":"boolean","description":"When enabled, Git LFS objects are fetched during the source checkout step of a deployment. Enabled by default. Disable this to skip LFS downloads and speed up checkout when the repository contains LFS files that are not needed at build time.","example":true},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for public git sources.","example":"github"},"hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Primary hostname assigned to the static site","example":"my-site.sevalla.app"},"install_command":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Command used to install dependencies before building the static site","example":"npm install"},"build_command":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Command used to build the static site","example":"npm run build"},"published_directory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Directory containing the built files to publish","example":"dist"},"root_directory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root directory of the project within the repository","example":"/"},"node_version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Node.js version used to build the static site","example":"20"},"index_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom index file served as the entry point for the static site","example":"index.html"},"error_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom error page file served when a requested path is not found","example":"404.html"},"allow_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths that trigger a deployment when changed. When set, only commits touching these paths will trigger auto deploy.","example":["src/**","package.json"]},"ignore_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy.","example":["docs/**","README.md"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the static site was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the static site was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","name","display_name","status","source","repo_url","default_branch","auto_deploy","is_preview_enabled","git_lfs_enabled","git_type","hostname","install_command","build_command","published_directory","root_directory","node_version","index_file","error_file","allow_deploy_paths","ignore_deploy_paths","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateStaticSiteV3","summary":"Update static site","tags":["Static sites"],"description":"Update one or more properties of an existing static site. Only include the fields you want to change - omitted fields are left unchanged. Changes to build settings take effect on the next deployment. When changing source or repo_url, the repository is validated against the Git provider.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"Human-readable name shown in the dashboard and API responses","example":"My Static Site","type":"string","minLength":1,"maxLength":64},"auto_deploy":{"description":"Enable or disable automatic deployments on every push to the default branch","example":true,"type":"boolean"},"default_branch":{"description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main","type":"string","minLength":1},"build_command":{"description":"Command used to build the static site","example":"npm run build","anyOf":[{"type":"string"},{"type":"null"}]},"node_version":{"description":"Node.js version used to build the static site","example":"20","anyOf":[{"type":"string"},{"type":"null"}]},"published_directory":{"description":"Directory containing the built files to publish","example":"dist","anyOf":[{"type":"string"},{"type":"null"}]},"is_preview_enabled":{"description":"Enable or disable preview deployments for pull requests targeting the default branch","example":false,"type":"boolean"},"git_lfs_enabled":{"description":"Enable or disable Git LFS during the source checkout step. Enabled by default. When enabled, LFS objects are fetched on every deployment. Disable to skip LFS downloads.","example":true,"type":"boolean"},"install_command":{"description":"Command used to install dependencies before building the static site","example":"npm install","anyOf":[{"type":"string"},{"type":"null"}]},"root_directory":{"description":"Root directory of the project within the repository","example":".","anyOf":[{"type":"string"},{"type":"null"}]},"index_file":{"description":"Custom index file served as the entry point for the static site","example":"index.html","type":"string","minLength":1},"error_file":{"description":"Custom error page file served when a requested path is not found","example":"404.html","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Where the static site source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL.","example":"privateGit","type":"string","enum":["privateGit","publicGit"]},"git_type":{"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for public git sources.","example":"github","anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}]},"repo_url":{"description":"Full URL of the Git repository","example":"https://github.com/user/static-site","type":"string","minLength":1},"allow_deploy_paths":{"description":"Glob patterns for file paths that trigger a deployment. When set, only commits touching these paths trigger auto deploy. Mutually exclusive with ignore_deploy_paths.","example":["src/**","package.json"],"type":"array","items":{"type":"string"}},"ignore_deploy_paths":{"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy. Mutually exclusive with allow_deploy_paths.","example":["docs/**","README.md"],"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the static site","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Static Site"},"auto_deploy":{"type":"boolean","description":"When enabled, a new deployment is automatically triggered on every push to the default branch","example":true},"default_branch":{"type":"string","description":"Git branch used for automatic and manual deployments when no branch is explicitly specified","example":"main"},"build_command":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Command used to build the static site","example":"npm run build"},"node_version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Node.js version used to build the static site","example":"20"},"published_directory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Directory containing the built files to publish","example":"dist"},"is_preview_enabled":{"type":"boolean","description":"When enabled, preview deployments are created for pull requests targeting the default branch","example":false},"git_lfs_enabled":{"type":"boolean","description":"When enabled, Git LFS objects are fetched during the source checkout step of a deployment. Enabled by default. Disable this to skip LFS downloads and speed up checkout when the repository contains LFS files that are not needed at build time.","example":true},"install_command":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Command used to install dependencies before building the static site","example":"npm install"},"root_directory":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root directory of the project within the repository","example":"/"},"index_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom index file served as the entry point for the static site","example":"index.html"},"error_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom error page file served when a requested path is not found","example":"404.html"},"allow_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths that trigger a deployment when changed. When set, only commits touching these paths will trigger auto deploy.","example":["src/**","package.json"]},"ignore_deploy_paths":{"type":"array","items":{"type":"string"},"description":"Glob patterns for file paths to exclude from deployment triggers. Commits that only touch ignored paths will not trigger auto deploy.","example":["docs/**","README.md"]},"source":{"type":"string","enum":["privateGit","publicGit"],"description":"Where the static site source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL.","example":"privateGit"},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for public git sources.","example":"github"},"repo_url":{"type":"string","description":"Full URL of the Git repository","example":"https://github.com/user/static-site"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the static site was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"status":{"anyOf":[{"type":"string","enum":["deploymentInProgress","deploymentFailed","deploymentSuccess","deploymentCancelled","deleting","deletionFailed"]},{"type":"null"}],"description":"Current status of the static site reflecting the most recent deployment or lifecycle operation","example":"deploymentSuccess"}},"required":["id","display_name","auto_deploy","default_branch","build_command","node_version","published_directory","is_preview_enabled","git_lfs_enabled","install_command","root_directory","index_file","error_file","allow_deploy_paths","ignore_deploy_paths","source","git_type","repo_url","updated_at","status"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Conflict"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":409},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteStaticSiteV3","summary":"Delete static site","tags":["Static sites"],"description":"Permanently delete a static site and all of its associated resources including deployments and custom domains. This operation is irreversible.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Static site is being deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Conflict"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":409},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/domains":{"get":{"operationId":"listStaticSiteDomainsV3","summary":"List static site domains","tags":["Static sites"],"description":"Retrieve a paginated list of all domains (both system and custom) associated with a static site. System domains are assigned automatically, while custom domains are added by users.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"addStaticSiteDomainV3","summary":"Add static site domain","tags":["Static sites"],"description":"Add a custom domain to a static site. After adding, configure your DNS records as indicated in the response to complete domain verification. The domain status will transition from `verification` to `pointing` to `active` as DNS propagates.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain_name":{"type":"string","minLength":1,"description":"The custom domain name to add to the static site","example":"site.example.com"},"is_wildcard":{"description":"Whether this should be a wildcard domain that matches all subdomains","example":false,"type":"boolean"},"custom_ssl_cert":{"description":"Custom SSL certificate in PEM format. When provided, the platform uses this certificate instead of auto-provisioning one.","example":"-----BEGIN CERTIFICATE-----...","type":"string"},"custom_ssl_key":{"description":"Private key for the custom SSL certificate in PEM format. Required when custom_ssl_cert is provided.","example":"-----BEGIN PRIVATE KEY-----...","type":"string"}},"required":["domain_name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/domains/{domain_id}":{"get":{"operationId":"getStaticSiteDomainV3","summary":"Get static site domain","tags":["Static sites"],"description":"Retrieve the details of a specific domain associated with a static site, including its verification status, DNS records, and configuration.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteStaticSiteDomainV3","summary":"Delete static site domain","tags":["Static sites"],"description":"Remove a custom domain from a static site. System domains cannot be deleted - use the toggle endpoint to disable them instead. This action cannot be undone.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateStaticSiteDomainV3","summary":"Update static site system domain","tags":["Static sites"],"description":"Update the subdomain name of a system domain. Only applies to system domains - use the add/delete endpoints to manage custom domains.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"New subdomain name for the system domain","example":"my-site"}},"required":["name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/domains/{domain_id}/refresh-status":{"post":{"operationId":"refreshStaticSiteDomainStatusV3","summary":"Refresh static site domain status","tags":["Static sites"],"description":"Trigger a re-check of the domain verification and DNS pointing status. Use this after updating your DNS records to speed up the verification process.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain status refresh initiated"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/domains/{domain_id}/set-primary":{"post":{"operationId":"setStaticSitePrimaryDomainV3","summary":"Set primary static site domain","tags":["Static sites"],"description":"Set a domain as the primary domain for the static site. The primary domain is used for canonical URLs and redirects. Only one domain can be primary at a time - the previously primary domain is automatically demoted.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain set as primary"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/domains/{domain_id}/toggle":{"post":{"operationId":"toggleStaticSiteSystemDomainV3","summary":"Toggle static site system domain","tags":["Static sites"],"description":"Enable or disable a system domain for the static site. When disabled, the system domain stops serving traffic. Only applies to system domains - custom domains cannot be toggled.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"System domain toggled"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/access-logs":{"get":{"operationId":"getStaticSiteAccessLogsV3","summary":"Get static site access logs","tags":["Static sites"],"description":"Retrieve HTTP access logs for a static site. These are logs of incoming requests served by the static site. Returns the most recent `limit` entries in the time range, oldest first by default (set `order=desc` for newest first). Use `search` for a case-insensitive text match on the message, and `filters` for filtering by severity, message, tags, or attributes.","parameters":[{"schema":{"example":"2026-02-22T14:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":false,"description":"Start of the time range in ISO 8601 format. Defaults to 1 hour before `to` if not provided."},{"schema":{"example":"2026-02-22T15:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":false,"description":"End of the time range in ISO 8601 format. Defaults to now if not provided."},{"schema":{"example":"connection refused","type":"string","minLength":1,"maxLength":500},"in":"query","name":"search","required":false,"description":"Case-insensitive substring match on the log message. Only entries whose message contains this text are returned. Can be combined with `filters`."},{"schema":{"example":"[{\"key\":\"severity\",\"operator\":\"EQUALS\",\"value\":\"ERROR\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects. All filters must match (they are combined with AND). Each filter has a `key`, an `operator`, and a `value` (or `values` for `IS_IN` and `IS_NOT_IN`).\n\nSupported keys: `severity`, `message`, `id`, `tags.<name>` for a tag value, and `attributes.<name>` for an attribute value (use dots for nested attribute fields, e.g. `attributes.request.path`).\n\nSupported operators: `EQUALS`, `DOES_NOT_EQUAL`, `CONTAINS`, `DOES_NOT_CONTAIN`, `STARTS_WITH`, `DOES_NOT_START_WITH`, `ENDS_WITH`, `DOES_NOT_END_WITH`, `GREATER_THAN_OR_EQUALS` and `LESS_THAN_OR_EQUALS` (numeric comparison), `IS_IN` and `IS_NOT_IN` (match against a list in `values`). Text operators are case-sensitive - use `search` for a case-insensitive message match. An unknown key or operator returns a 400.\n\nExample: [{\"key\":\"severity\",\"operator\":\"IS_IN\",\"values\":[\"ERROR\",\"WARN\"]},{\"key\":\"message\",\"operator\":\"CONTAINS\",\"value\":\"timeout\"}]"},{"schema":{"default":"asc","example":"desc","type":"string","enum":["asc","desc"]},"in":"query","name":"order","required":false,"description":"Sort order of the returned entries. `asc` - oldest first (default), `desc` - newest first. The order does not change which entries are returned: when more entries match than `limit`, the most recent ones are always returned."},{"schema":{"default":1000,"example":1000,"type":"integer","minimum":1,"maximum":5000},"in":"query","name":"limit","required":false,"description":"Maximum number of log entries to return (1-5000). When more entries match, the most recent ones in the time range are returned."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the log entry","example":"abc123"},"message":{"type":"string","description":"Log message content","example":"Server started on port 3000"},"service":{"type":"string","description":"Service that produced the log entry, such as APP_RUNTIME, APP_ACCESS, APP_DEPLOYMENT, SS_DEPLOYMENT, or SS_ACCESS","example":"APP_RUNTIME"},"severity":{"type":"string","description":"Log severity level such as INFO, WARN, ERROR, or DEBUG","example":"INFO"},"timestamp":{"type":"string","description":"Formatted timestamp of the log entry","example":"2026-02-22 15:30:00.000"},"tags":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Key-value pairs of tags associated with the log entry, such as container name or resource ID","example":{"idApp":"fb5e5168-4281-4bec-94c5-0d1584e9e657","container":"web"}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Additional structured attributes attached to the log entry","example":{}},"unix_timestamp":{"type":"number","description":"Unix timestamp of the log entry in microseconds","example":1740236400000000}},"required":["id","message","service","severity","timestamp","tags","attributes","unix_timestamp"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/deployments":{"get":{"operationId":"listStaticSiteDeploymentsV3","summary":"List static site deployments","tags":["Static sites"],"description":"Retrieve a paginated list of all deployments for a static site, ordered by most recent first. Each deployment includes its status, source details, and timestamps.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"static_site_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the static site this deployment belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"anyOf":[{"type":"string","enum":["waiting","inProgress","success","failed","cancelled","skipped"]},{"type":"null"}],"description":"Current status of the deployment. `waiting` - queued for processing. `inProgress` - build or publish is running. `success` - deployed successfully. `failed` - deployment failed. `cancelled` - cancelled before completion. `skipped` - skipped because no changes were detected.","example":"success"},"type":{"anyOf":[{"type":"string","enum":["manual","automatic"]},{"type":"null"}],"description":"How the deployment was triggered. `manual` - triggered via API or dashboard. `automatic` - triggered by a Git push.","example":"manual"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository used for this deployment","example":"https://github.com/user/static-site"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch deployed","example":"main"},"is_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this is a preview deployment for a pull request","example":false},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git username of the commit author","example":"octocat"},"author_img":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Avatar URL of the commit author","example":"https://avatars.githubusercontent.com/u/1234"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full SHA of the deployed commit","example":"abc123def456"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message of the deployed commit","example":"Update landing page"},"cloud_build_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the cloud build job for this deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"build_error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Error message from the build step if the deployment failed","example":"Build failed: exit code 1"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment finished, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment started building, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","static_site_id","status","type","repo_url","branch","is_preview","author_login","author_img","commit_sha","commit_message","cloud_build_id","build_error","created_at","updated_at","finished_at","started_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"deployStaticSiteV3","summary":"Deploy static site","tags":["Static sites"],"description":"Trigger a new deployment for a static site. By default, deploys the latest commit on the default branch. You can optionally specify a different branch or roll back to a previous deployment by providing a deployment_id. The deployment runs asynchronously - use the list deployments endpoint to track progress.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branch":{"description":"Git branch to deploy. When omitted, the static site default branch is used.","type":"string"},"deployment_id":{"description":"Identifier of a previous deployment to roll back to. When provided, the branch field is ignored.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"static_site_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the static site this deployment belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"anyOf":[{"type":"string","enum":["waiting","inProgress","success","failed","cancelled","skipped"]},{"type":"null"}],"description":"Current status of the deployment. `waiting` - queued for processing. `inProgress` - build or publish is running. `success` - deployed successfully. `failed` - deployment failed. `cancelled` - cancelled before completion. `skipped` - skipped because no changes were detected.","example":"success"},"type":{"anyOf":[{"type":"string","enum":["manual","automatic"]},{"type":"null"}],"description":"How the deployment was triggered. `manual` - triggered via API or dashboard. `automatic` - triggered by a Git push.","example":"manual"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository used for this deployment","example":"https://github.com/user/static-site"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch deployed","example":"main"},"is_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this is a preview deployment for a pull request","example":false},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git username of the commit author","example":"octocat"},"author_img":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Avatar URL of the commit author","example":"https://avatars.githubusercontent.com/u/1234"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full SHA of the deployed commit","example":"abc123def456"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message of the deployed commit","example":"Update landing page"},"cloud_build_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the cloud build job for this deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"build_error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Error message from the build step if the deployment failed","example":"Build failed: exit code 1"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment finished, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment started building, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","static_site_id","status","type","repo_url","branch","is_preview","author_login","author_img","commit_sha","commit_message","cloud_build_id","build_error","created_at","updated_at","finished_at","started_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/deployments/{deployment_id}":{"get":{"operationId":"getStaticSiteDeploymentV3","summary":"Get static site deployment","tags":["Static sites"],"description":"Retrieve details of a specific deployment for a static site, including its status, source details, and timestamps.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"deployment_id","required":true,"description":"Deployment identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the deployment","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"static_site_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the static site this deployment belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"anyOf":[{"type":"string","enum":["waiting","inProgress","success","failed","cancelled","skipped"]},{"type":"null"}],"description":"Current status of the deployment. `waiting` - queued for processing. `inProgress` - build or publish is running. `success` - deployed successfully. `failed` - deployment failed. `cancelled` - cancelled before completion. `skipped` - skipped because no changes were detected.","example":"success"},"type":{"anyOf":[{"type":"string","enum":["manual","automatic"]},{"type":"null"}],"description":"How the deployment was triggered. `manual` - triggered via API or dashboard. `automatic` - triggered by a Git push.","example":"manual"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository used for this deployment","example":"https://github.com/user/static-site"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch deployed","example":"main"},"is_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this is a preview deployment for a pull request","example":false},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git username of the commit author","example":"octocat"},"author_img":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Avatar URL of the commit author","example":"https://avatars.githubusercontent.com/u/1234"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full SHA of the deployed commit","example":"abc123def456"},"commit_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message of the deployed commit","example":"Update landing page"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the deployment was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"finished_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment finished, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the deployment started building, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","static_site_id","status","type","repo_url","branch","is_preview","author_login","author_img","commit_sha","commit_message","created_at","updated_at","finished_at","started_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/deployments/{deployment_id}/cancel":{"post":{"operationId":"cancelStaticSiteDeploymentV3","summary":"Cancel static site deployment","tags":["Static sites"],"description":"Cancel a deployment that is currently in progress or waiting. Deployments in the `waiting` status are skipped immediately, while `inProgress` deployments are stopped mid-execution. Completed or already cancelled deployments cannot be cancelled.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"deployment_id","required":true,"description":"Deployment identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Cancellation result message","example":"Deployment is being cancelled"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/deployments/{deployment_id}/logs":{"get":{"operationId":"getStaticSiteDeploymentLogsV3","summary":"Get static site deployment logs","tags":["Static sites"],"description":"Retrieve build and deployment logs for a specific static site deployment. These include output from the build process and publish steps. Returns the most recent `limit` entries in the time range, oldest first by default (set `order=desc` for newest first). Use `search` for a case-insensitive text match on the message, and `filters` for filtering by severity, message, tags, or attributes.","parameters":[{"schema":{"example":"2026-02-22T14:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"from","required":false,"description":"Start of the time range in ISO 8601 format. Defaults to 1 hour before `to` if not provided."},{"schema":{"example":"2026-02-22T15:30:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"in":"query","name":"to","required":false,"description":"End of the time range in ISO 8601 format. Defaults to now if not provided."},{"schema":{"example":"connection refused","type":"string","minLength":1,"maxLength":500},"in":"query","name":"search","required":false,"description":"Case-insensitive substring match on the log message. Only entries whose message contains this text are returned. Can be combined with `filters`."},{"schema":{"example":"[{\"key\":\"severity\",\"operator\":\"EQUALS\",\"value\":\"ERROR\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects. All filters must match (they are combined with AND). Each filter has a `key`, an `operator`, and a `value` (or `values` for `IS_IN` and `IS_NOT_IN`).\n\nSupported keys: `severity`, `message`, `id`, `tags.<name>` for a tag value, and `attributes.<name>` for an attribute value (use dots for nested attribute fields, e.g. `attributes.request.path`).\n\nSupported operators: `EQUALS`, `DOES_NOT_EQUAL`, `CONTAINS`, `DOES_NOT_CONTAIN`, `STARTS_WITH`, `DOES_NOT_START_WITH`, `ENDS_WITH`, `DOES_NOT_END_WITH`, `GREATER_THAN_OR_EQUALS` and `LESS_THAN_OR_EQUALS` (numeric comparison), `IS_IN` and `IS_NOT_IN` (match against a list in `values`). Text operators are case-sensitive - use `search` for a case-insensitive message match. An unknown key or operator returns a 400.\n\nExample: [{\"key\":\"severity\",\"operator\":\"IS_IN\",\"values\":[\"ERROR\",\"WARN\"]},{\"key\":\"message\",\"operator\":\"CONTAINS\",\"value\":\"timeout\"}]"},{"schema":{"default":"asc","example":"desc","type":"string","enum":["asc","desc"]},"in":"query","name":"order","required":false,"description":"Sort order of the returned entries. `asc` - oldest first (default), `desc` - newest first. The order does not change which entries are returned: when more entries match than `limit`, the most recent ones are always returned."},{"schema":{"default":1000,"example":1000,"type":"integer","minimum":1,"maximum":5000},"in":"query","name":"limit","required":false,"description":"Maximum number of log entries to return (1-5000). When more entries match, the most recent ones in the time range are returned."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"deployment_id","required":true,"description":"Deployment identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the log entry","example":"abc123"},"message":{"type":"string","description":"Log message content","example":"Server started on port 3000"},"service":{"type":"string","description":"Service that produced the log entry, such as APP_RUNTIME, APP_ACCESS, APP_DEPLOYMENT, SS_DEPLOYMENT, or SS_ACCESS","example":"APP_RUNTIME"},"severity":{"type":"string","description":"Log severity level such as INFO, WARN, ERROR, or DEBUG","example":"INFO"},"timestamp":{"type":"string","description":"Formatted timestamp of the log entry","example":"2026-02-22 15:30:00.000"},"tags":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Key-value pairs of tags associated with the log entry, such as container name or resource ID","example":{"idApp":"fb5e5168-4281-4bec-94c5-0d1584e9e657","container":"web"}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Additional structured attributes attached to the log entry","example":{}},"unix_timestamp":{"type":"number","description":"Unix timestamp of the log entry in microseconds","example":1740236400000000}},"required":["id","message","service","severity","timestamp","tags","attributes","unix_timestamp"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/purge-cache":{"post":{"operationId":"purgeStaticSiteCacheV3","summary":"Purge edge cache","tags":["Static sites"],"description":"Purge the edge cache for a static site, removing all cached content. Use this when you need cached resources to be refreshed immediately without waiting for the cache TTL to expire.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Cache purged successfully"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/pretty-url/toggle":{"post":{"operationId":"toggleStaticSitePrettyUrlV3","summary":"Toggle pretty URLs","tags":["Static sites"],"description":"Toggle pretty URL redirects for a static site. When enabled, URLs like `/about` will serve `/about/index.html` or `/about.html` without showing the file extension.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_turned_on":{"type":"boolean","description":"Whether pretty URLs are currently enabled for this static site","example":true}},"required":["is_turned_on"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/rate-limit":{"get":{"operationId":"getStaticSiteRateLimitV3","summary":"Get rate limit","tags":["Static sites"],"description":"Retrieve the current rate limiting configuration for a static site. Rate limiting restricts each client IP to 100 requests per minute per hostname and applies the configured action when the limit is exceeded. If rate limiting has never been configured, returns the default state: disabled with the `challenge` action.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting is currently active","example":false},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action applied when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"put":{"operationId":"updateStaticSiteRateLimitV3","summary":"Update rate limit","tags":["Static sites"],"description":"Update the rate limiting configuration for a static site. Rate limiting restricts each client IP to 100 requests per minute per hostname across the static site domains. When a client exceeds the limit, the configured action is applied: `challenge` requires the visitor to pass a managed challenge for 5 minutes, `throttle` blocks requests only while the rate stays above the limit, and `ban` blocks the client IP for 5 minutes. Changes are synced to the edge network as part of the request. Returns the updated rate limit state.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting should be active","example":true},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action to apply when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting is currently active","example":true},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action applied when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/requests-per-minute":{"get":{"operationId":"getStaticSiteRequestsPerMinuteV3","summary":"Get static site requests per minute","tags":["Static sites"],"description":"Retrieve a time series of requests per minute for a static site. Returns data points at the specified interval, useful for monitoring traffic patterns and detecting spikes.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/response-time":{"get":{"operationId":"getStaticSiteResponseTimeV3","summary":"Get static site response time","tags":["Static sites"],"description":"Retrieve a time series of response times for a static site. Use the optional `percent` parameter to get a specific percentile (e.g., p95 or p99) instead of the default.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"example":95,"type":"integer","minimum":1,"maximum":99},"in":"query","name":"percent","required":false,"description":"Percentile value for response time calculation (1-99). For example, 95 returns the p95 response time"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"number","description":"Metric value at this timestamp","example":42}},"required":["time","value"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/response-time-avg":{"get":{"operationId":"getStaticSiteResponseTimeAvgV3","summary":"Get static site average response time","tags":["Static sites"],"description":"Retrieve the average response time in milliseconds for a static site over the specified time range. Returns a single aggregated value rather than a time series.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"average_response_time_ms":{"type":"number","minimum":0,"description":"Average response time in milliseconds","example":123.45}},"required":["average_response_time_ms"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/status-codes":{"get":{"operationId":"getStaticSiteStatusCodesV3","summary":"Get static site status code breakdown","tags":["Static sites"],"description":"Retrieve a time series showing the breakdown of HTTP response status codes for a static site. Each data point includes a map of status codes to their request counts.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp of the data point","example":"2026-02-22T14:30:00.000Z"},"value":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"},"description":"Breakdown of request counts by HTTP status code","example":{"200":150,"404":12,"500":3}}},"required":["time","value"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/top-status-codes":{"get":{"operationId":"getStaticSiteTopStatusCodesV3","summary":"Get static site top status codes","tags":["Static sites"],"description":"Retrieve the most common HTTP response status codes for a static site, ranked by total request count. Useful for identifying error rates and common response patterns.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","description":"HTTP status code","example":"200"},"total":{"type":"number","minimum":0,"description":"Total number of requests with this status code","example":1500}},"required":["status","total"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/top-countries":{"get":{"operationId":"getStaticSiteTopCountriesV3","summary":"Get static site top countries","tags":["Static sites"],"description":"Retrieve the countries generating the most traffic to a static site, ranked by total request count. Each entry includes the country code, average response time, and total requests.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","description":"Two-letter country code (ISO 3166-1 alpha-2)","example":"US"},"response_time":{"type":"number","minimum":0,"description":"Average response time in milliseconds for requests from this country","example":85.2},"total":{"type":"number","minimum":0,"description":"Total number of requests from this country","example":5000}},"required":["country","response_time","total"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/slowest-requests":{"get":{"operationId":"getStaticSiteSlowestRequestsV3","summary":"Get static site slowest requests","tags":["Static sites"],"description":"Retrieve the slowest request paths for a static site, ranked by average response time. Each entry includes the HTTP method, path, average response time, and total request count.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for this request group","example":"abc123"},"client_request_method":{"type":"string","description":"HTTP method of the request","example":"GET"},"client_request_path":{"type":"string","description":"URL path of the request","example":"/api/users"},"average_response_time_ms":{"type":"number","minimum":0,"description":"Average response time in milliseconds","example":1250.5},"count_of_requests":{"type":"number","minimum":0,"description":"Number of requests matching this method and path","example":342}},"required":["id","client_request_method","client_request_path","average_response_time_ms","count_of_requests"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/metrics/top-pages":{"get":{"operationId":"getStaticSiteTopPagesV3","summary":"Get static site top pages","tags":["Static sites"],"description":"Retrieve the most visited pages for a static site, ranked by total request count. Useful for understanding which pages receive the most traffic.","parameters":[{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T14:30:00.000Z"},"in":"query","name":"from","required":true,"description":"Start of the time range in ISO 8601 format"},{"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-02-22T15:30:00.000Z"},"in":"query","name":"to","required":true,"description":"End of the time range in ISO 8601 format"},{"schema":{"example":60,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"interval_in_seconds","required":false,"description":"Aggregation interval in seconds. Determines the granularity of time-series data points"},{"schema":{"example":"[{\"key\":\"attributes.clientRequestPath\",\"operator\":\"EQUALS\",\"value\":\"/api/users\"}]","type":"string"},"in":"query","name":"filters","required":false,"description":"JSON-encoded array of filter objects for advanced filtering. Each filter has a `key`, `operator`, and `value` or `values` field. Supported keys are `attributes.<name>` (log attributes such as clientRequestPath, clientRequestMethod or edgeResponseStatus), `tags.<name>`, `id`, `message` and `severity`. Unsupported keys are rejected with a 400 response."},{"schema":{"default":10,"example":10,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items to return (1-100)"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"page":{"type":"string","description":"URL path","example":"/api/users"},"total":{"type":"number","minimum":0,"description":"Total number of requests to this page","example":2500}},"required":["page","total"],"additionalProperties":false}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/env-vars":{"get":{"operationId":"listStaticSiteEnvVarsV3","summary":"List static site environment variables","tags":["Static sites"],"description":"Retrieve a paginated list of all environment variables for a static site. Values are returned decrypted.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"static_site_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the static site this environment variable belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable","example":"API_KEY"},"value":{"type":"string","maxLength":32768,"description":"Decrypted value of the environment variable","example":"my-secret-value"},"is_production":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is used in production deployments","example":true},"is_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is used in preview deployments","example":false},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch this variable is scoped to, or null for all branches","example":"main"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","static_site_id","key","value","is_production","is_preview","branch","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createStaticSiteEnvVarV3","summary":"Create static site environment variable","tags":["Static sites"],"description":"Create a new environment variable for a static site. The value is encrypted before storage. A deployment is required for the new variable to take effect.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable. Must be unique within the static site scope.","example":"API_BASE_URL"},"value":{"type":"string","maxLength":32768,"description":"Value of the environment variable. Will be stored encrypted at rest.","example":"https://api.example.com"},"is_production":{"description":"Whether this variable is used in production deployments. Defaults to true.","example":true,"type":"boolean"},"is_preview":{"description":"Whether this variable is used in preview deployments. Defaults to true.","example":true,"type":"boolean"},"branch":{"description":"Git branch this variable is scoped to. When omitted, the variable applies to all branches.","example":"main","type":"string"}},"required":["key","value"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"static_site_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the static site this environment variable belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable","example":"API_KEY"},"value":{"type":"string","maxLength":32768,"description":"Decrypted value of the environment variable","example":"my-secret-value"},"is_production":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is used in production deployments","example":true},"is_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is used in preview deployments","example":false},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch this variable is scoped to, or null for all branches","example":"main"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","static_site_id","key","value","is_production","is_preview","branch","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/env-vars/{env_var_id}":{"put":{"operationId":"updateStaticSiteEnvVarV3","summary":"Update static site environment variable","tags":["Static sites"],"description":"Update an existing environment variable for a static site. You can change the key, value, or scope flags. A deployment is required for changes to take effect.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"description":"New name for the environment variable","example":"API_BASE_URL","type":"string","minLength":1,"maxLength":255},"value":{"description":"New value for the environment variable. Will be stored encrypted at rest.","example":"https://api.example.com","type":"string","maxLength":32768},"is_production":{"description":"Whether this variable is used in production deployments","example":true,"type":"boolean"},"is_preview":{"description":"Whether this variable is used in preview deployments","example":true,"type":"boolean"},"branch":{"description":"Git branch this variable is scoped to, or null for all branches","example":"main","anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"env_var_id","required":true,"description":"Environment variable identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the environment variable","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"static_site_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the static site this environment variable belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"key":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the environment variable","example":"API_KEY"},"value":{"type":"string","maxLength":32768,"description":"Decrypted value of the environment variable","example":"my-secret-value"},"is_production":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is used in production deployments","example":true},"is_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether this variable is used in preview deployments","example":false},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Git branch this variable is scoped to, or null for all branches","example":"main"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the environment variable was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","static_site_id","key","value","is_production","is_preview","branch","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteStaticSiteEnvVarV3","summary":"Delete static site environment variable","tags":["Static sites"],"description":"Delete an environment variable from a static site. A deployment is required for the removal to take effect.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"env_var_id","required":true,"description":"Environment variable identifier"}],"x-required-permissions":["STATIC_SITE:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Deletion result message","example":"Environment variable deleted"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/repository":{"get":{"operationId":"getStaticSiteRepositoryV3","summary":"Get static site repository","tags":["Static sites"],"description":"Retrieve metadata about the Git repository connected to a static site: the source type, Git provider, repository URL, default branch, and the commit currently deployed (from the latest successful deployment). Call this first to discover the deployed commit SHA, then pass it as the `ref` to the tree and contents endpoints to inspect exactly the code that is deployed. Static sites always have a `privateGit` or `publicGit` source; the 422 response only occurs if the repository URL is missing.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["privateGit","publicGit"],"description":"Where the static site source code comes from. `privateGit` - private Git repository connected via OAuth. `publicGit` - public Git repository URL.","example":"privateGit"},"git_type":{"anyOf":[{"type":"string","enum":["github","bitbucket","gitlab"]},{"type":"null"}],"description":"Git hosting provider for the repository. `github` - GitHub. `bitbucket` - Bitbucket. `gitlab` - GitLab. Null for public git sources.","example":"github"},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full URL of the Git repository","example":"https://github.com/acme/my-site"},"default_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Default branch configured for deployments","example":"main"},"deployed_commit":{"anyOf":[{"type":"object","properties":{"sha":{"type":"string","description":"Commit SHA currently deployed, taken from the latest successful deployment","example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit message","example":"Fix homepage layout"},"author_login":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Commit author login","example":"octocat"}},"required":["sha","message","author_login"],"additionalProperties":false},{"type":"null"}],"description":"The commit currently deployed from the static site's current repository. Null if the static site has never deployed successfully, or if its repository was changed after the last successful deployment (the deployed commit belongs to the old repo and no longer applies)."}},"required":["source","git_type","repo_url","default_branch","deployed_commit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/repository/tree":{"get":{"operationId":"listStaticSiteRepositoryTreeV3","summary":"List static site repository tree","tags":["Static sites"],"description":"List files and directories in the static site Git repository at a given ref. Use this to discover the repository structure before reading individual files. Defaults to reading the commit of the latest successful deployment so you see exactly the code that is deployed. Static sites always have a `privateGit` or `publicGit` source; the 422 response only occurs if the repository URL is missing.","parameters":[{"schema":{"example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0","type":"string"},"in":"query","name":"ref","required":false,"description":"Branch, tag, or commit SHA to read the tree at. Defaults to the commit of the latest successful deployment, falling back to the default branch when there is no such deployment or the static site's repository was changed after it (so the deployed commit no longer exists in the current repo). Pass the deployed commit SHA to inspect exactly the code that is deployed."},{"schema":{"example":"src","type":"string"},"in":"query","name":"path","required":false,"description":"Directory path relative to the repository root. Defaults to the root."},{"schema":{"example":false,"type":"string"},"in":"query","name":"recursive","required":false,"description":"When true, returns the full tree under `path` recursively in a single response. When false (default), returns only the immediate children. Large trees may be truncated."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ref the tree was read at (the resolved commit SHA or branch)","example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"},"entries":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path of the entry relative to the repository root","example":"src/index.ts"},"type":{"type":"string","enum":["file","dir"],"description":"Entry type. `file` - a file (blob). `dir` - a directory (tree).","example":"file"},"size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"File size in bytes. Null for directories.","example":1024},"sha":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Object SHA of the entry, when available","example":"b1c2d3e4"}},"required":["path","type","size","sha"],"additionalProperties":false},"description":"Tree entries at the requested path"}},"required":["ref","entries"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/repository/contents":{"get":{"operationId":"getStaticSiteRepositoryFileV3","summary":"Read static site repository file","tags":["Static sites"],"description":"Read the contents of a single file from the static site Git repository at a given ref. Defaults to the commit of the latest successful deployment so you read exactly the code that is deployed. Binary files and files larger than 1 MB return metadata only with a null `content` (check `is_binary` and `truncated`). Returns 404 when the file does not exist at the ref. Static sites always have a `privateGit` or `publicGit` source; the 422 response only occurs if the repository URL is missing.","parameters":[{"schema":{"type":"string","minLength":1,"example":"src/index.ts"},"in":"query","name":"path","required":true,"description":"Path of the file to read, relative to the repository root."},{"schema":{"example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0","type":"string"},"in":"query","name":"ref","required":false,"description":"Branch, tag, or commit SHA to read the file at. Defaults to the commit of the latest successful deployment, falling back to the default branch when there is no such deployment or the static site's repository was changed after it (so the deployed commit no longer exists in the current repo)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"path":{"type":"string","description":"Path of the file relative to the repository root","example":"src/index.ts"},"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ref the file was read at (the resolved commit SHA or branch)","example":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UTF-8 file content. Null when the file is binary or exceeds the 1 MB size limit.","example":"export const main = () => console.log('hello')"},"size":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"File size in bytes","example":1024},"is_binary":{"type":"boolean","description":"Whether the file was detected as binary. Binary files do not return content.","example":false},"truncated":{"type":"boolean","description":"Whether content was omitted because the file exceeds the 1 MB size limit","example":false}},"required":["path","ref","content","size","is_binary","truncated"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/static-sites/{id}/repository/search":{"get":{"operationId":"searchStaticSiteRepositoryV3","summary":"Search static site repository code","tags":["Static sites"],"description":"Search the static site Git repository for code matching a query, useful for locating where something is defined or used. Search runs against the provider index, which covers the default branch, so it does not accept a ref. Result quality varies by provider: it is strongest on GitHub and more limited on GitLab and Bitbucket. Static sites always have a `privateGit` or `publicGit` source; the 422 response only occurs if the repository URL is missing.","parameters":[{"schema":{"type":"string","minLength":1,"example":"createServer"},"in":"query","name":"query","required":true,"description":"Code search query. Searches file contents in the repository."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Static site identifier"}],"x-required-permissions":["STATIC_SITE:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"matches":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path of the file containing the match","example":"src/server.ts"},"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ref the match was found on, when reported by the provider","example":"main"},"line":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Line number of the match, when available","example":12},"preview":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A short snippet of the matching line, when available","example":"const createServer = () => {}"}},"required":["path","ref","line","preview"],"additionalProperties":false},"description":"Matching code locations"}},"required":["matches"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unprocessable entity"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":422},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/usage-alerts":{"get":{"operationId":"listUsageAlertConfigsV3","summary":"List usage alert configs","tags":["Usage Alerts"],"description":"Retrieve all usage alert configs for the company, including the company-wide config and any project-scoped configs. Pass project_id to filter to a single project.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"project_id","required":false,"description":"Filter to the config scoped to a specific project. Omit to list all configs for the company."}],"x-required-permissions":["BILLING:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the usage alert config","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","minLength":1,"description":"Identifier of the company this config belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this config is scoped to. When null, the config applies to total company spend across all projects.","example":null},"limit_usd":{"type":"number","minimum":0.01,"description":"Spending limit in USD that triggers fire as percentages of. Must be greater than zero.","example":100},"emails":{"minItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email recipients notified when a trigger fires","example":["billing@example.com"]},"triggers":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the trigger","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"percentage":{"type":"integer","minimum":1,"maximum":100,"description":"Threshold expressed as a percentage of the spending limit. Fires once per billing period.","example":80},"last_fired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when this trigger last fired, in ISO 8601 format. Null if it has not fired yet.","example":null}},"required":["id","percentage","last_fired_at"],"additionalProperties":false,"description":"A threshold percentage that fires a notification when reached"},"description":"Threshold percentages of the limit. The highest matching trigger fires once per billing period. Up to 10 triggers per config."},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","limit_usd","emails","triggers","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createUsageAlertConfigV3","summary":"Create usage alert config","tags":["Usage Alerts"],"description":"Create a usage alert config for the company or for a specific project. Each company can have one company-wide config plus one config per project. Configs are evaluated hourly against the current billing period. The highest matching trigger fires once per period and notifies the listed emails.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"description":"Project to scope the config to. Omit or pass null to create a company-wide config that tracks total spend across all projects.","example":null,"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"limit_usd":{"type":"number","minimum":0.01,"description":"Spending limit in USD. Triggers fire as percentages of this value.","example":100},"emails":{"minItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email recipients notified when a trigger fires","example":["billing@example.com"]},"triggers":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"percentage":{"type":"integer","minimum":1,"maximum":100,"description":"Threshold expressed as a percentage of the spending limit","example":80}},"required":["percentage"]},"description":"Threshold percentages of the limit. Up to 10 triggers per config.","example":[{"percentage":50},{"percentage":80},{"percentage":100}]}},"required":["limit_usd","emails","triggers"],"additionalProperties":false}}}},"x-required-permissions":["BILLING:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the usage alert config","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","minLength":1,"description":"Identifier of the company this config belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this config is scoped to. When null, the config applies to total company spend across all projects.","example":null},"limit_usd":{"type":"number","minimum":0.01,"description":"Spending limit in USD that triggers fire as percentages of. Must be greater than zero.","example":100},"emails":{"minItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email recipients notified when a trigger fires","example":["billing@example.com"]},"triggers":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the trigger","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"percentage":{"type":"integer","minimum":1,"maximum":100,"description":"Threshold expressed as a percentage of the spending limit. Fires once per billing period.","example":80},"last_fired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when this trigger last fired, in ISO 8601 format. Null if it has not fired yet.","example":null}},"required":["id","percentage","last_fired_at"],"additionalProperties":false,"description":"A threshold percentage that fires a notification when reached"},"description":"Threshold percentages of the limit. The highest matching trigger fires once per billing period. Up to 10 triggers per config."},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","limit_usd","emails","triggers","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/usage-alerts/{id}":{"get":{"operationId":"getUsageAlertConfigV3","summary":"Get usage alert config","tags":["Usage Alerts"],"description":"Retrieve a single usage alert config by its identifier, including its trigger thresholds.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Usage alert config identifier"}],"x-required-permissions":["BILLING:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the usage alert config","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","minLength":1,"description":"Identifier of the company this config belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this config is scoped to. When null, the config applies to total company spend across all projects.","example":null},"limit_usd":{"type":"number","minimum":0.01,"description":"Spending limit in USD that triggers fire as percentages of. Must be greater than zero.","example":100},"emails":{"minItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email recipients notified when a trigger fires","example":["billing@example.com"]},"triggers":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the trigger","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"percentage":{"type":"integer","minimum":1,"maximum":100,"description":"Threshold expressed as a percentage of the spending limit. Fires once per billing period.","example":80},"last_fired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when this trigger last fired, in ISO 8601 format. Null if it has not fired yet.","example":null}},"required":["id","percentage","last_fired_at"],"additionalProperties":false,"description":"A threshold percentage that fires a notification when reached"},"description":"Threshold percentages of the limit. The highest matching trigger fires once per billing period. Up to 10 triggers per config."},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","limit_usd","emails","triggers","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateUsageAlertConfigV3","summary":"Update usage alert config","tags":["Usage Alerts"],"description":"Update one or more properties of an existing usage alert config. Only the provided fields are changed. The project scope is fixed at creation and cannot be changed - delete the config and create a new one to move it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit_usd":{"description":"Spending limit in USD. Triggers fire as percentages of this value.","example":200,"type":"number","minimum":0.01},"emails":{"description":"Email recipients notified when a trigger fires","example":["billing@example.com"],"minItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"triggers":{"description":"Replaces all triggers on the config when provided. Existing trigger fired-state is reset because triggers are recreated.","example":[{"percentage":50},{"percentage":80},{"percentage":100}],"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"percentage":{"type":"integer","minimum":1,"maximum":100,"description":"Threshold expressed as a percentage of the spending limit","example":80}},"required":["percentage"]}}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Usage alert config identifier"}],"x-required-permissions":["BILLING:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the usage alert config","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","minLength":1,"description":"Identifier of the company this config belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this config is scoped to. When null, the config applies to total company spend across all projects.","example":null},"limit_usd":{"type":"number","minimum":0.01,"description":"Spending limit in USD that triggers fire as percentages of. Must be greater than zero.","example":100},"emails":{"minItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"description":"Email recipients notified when a trigger fires","example":["billing@example.com"]},"triggers":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the trigger","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"percentage":{"type":"integer","minimum":1,"maximum":100,"description":"Threshold expressed as a percentage of the spending limit. Fires once per billing period.","example":80},"last_fired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when this trigger last fired, in ISO 8601 format. Null if it has not fired yet.","example":null}},"required":["id","percentage","last_fired_at"],"additionalProperties":false,"description":"A threshold percentage that fires a notification when reached"},"description":"Threshold percentages of the limit. The highest matching trigger fires once per billing period. Up to 10 triggers per config."},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the config was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","limit_usd","emails","triggers","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteUsageAlertConfigV3","summary":"Delete usage alert config","tags":["Usage Alerts"],"description":"Permanently delete a usage alert config. The cron will stop evaluating it immediately. This action cannot be undone.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Usage alert config identifier"}],"x-required-permissions":["BILLING:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Usage alert config deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/webhooks":{"get":{"operationId":"listWebhooksV3","summary":"List webhooks","tags":["Webhooks"],"description":"Retrieve a paginated list of all webhooks configured for the company. Each company can have up to 10 webhooks. Webhooks receive HTTP POST notifications when subscribed events occur.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"}],"x-required-permissions":["WEBHOOK:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"is_enabled":{"type":"boolean","description":"Whether the webhook is currently active and receiving events","example":true},"allowed_events":{"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]},"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"]},"secret":{"type":"string","description":"Webhook signing secret used to verify event payloads. Prefixed with whsec_.","example":"whsec_abc123..."},"old_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous signing secret, available temporarily after rolling the secret to allow graceful migration","example":null},"old_secret_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the old secret expires, in ISO 8601 format. Null if no old secret exists.","example":null},"endpoint":{"type":"string","format":"uri","description":"URL where webhook events are delivered via HTTP POST","example":"https://example.com/webhooks"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional human-readable description for the webhook","example":"Production deploy notifications"},"created_by":{"type":"string","description":"Identifier of the API key that created the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the API key that last updated the webhook","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","is_enabled","allowed_events","secret","old_secret","old_secret_expired_at","endpoint","description","created_by","updated_by","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createWebhookV3","summary":"Create webhook","tags":["Webhooks"],"description":"Create a new webhook for the company. The webhook will start receiving events for the specified event types as soon as it is created. Each company can have up to 10 webhooks. A signing secret is automatically generated and included in the response.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"allowed_events":{"minItems":1,"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]},"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"]},"endpoint":{"type":"string","format":"uri","description":"URL where webhook events will be delivered via HTTP POST","example":"https://example.com/webhooks"},"description":{"description":"Optional human-readable description for the webhook","example":"Production deploy notifications","type":"string","maxLength":255}},"required":["allowed_events","endpoint"],"additionalProperties":false}}}},"x-required-permissions":["WEBHOOK:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"is_enabled":{"type":"boolean","description":"Whether the webhook is currently active and receiving events","example":true},"allowed_events":{"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]},"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"]},"secret":{"type":"string","description":"Webhook signing secret used to verify event payloads. Prefixed with whsec_.","example":"whsec_abc123..."},"old_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous signing secret, available temporarily after rolling the secret to allow graceful migration","example":null},"old_secret_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the old secret expires, in ISO 8601 format. Null if no old secret exists.","example":null},"endpoint":{"type":"string","format":"uri","description":"URL where webhook events are delivered via HTTP POST","example":"https://example.com/webhooks"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional human-readable description for the webhook","example":"Production deploy notifications"},"created_by":{"type":"string","description":"Identifier of the API key that created the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the API key that last updated the webhook","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","is_enabled","allowed_events","secret","old_secret","old_secret_expired_at","endpoint","description","created_by","updated_by","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/webhooks/{id}":{"get":{"operationId":"getWebhookV3","summary":"Get webhook","tags":["Webhooks"],"description":"Retrieve the details of a specific webhook, including its subscribed events, endpoint, and signing secret.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Webhook identifier"}],"x-required-permissions":["WEBHOOK:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"is_enabled":{"type":"boolean","description":"Whether the webhook is currently active and receiving events","example":true},"allowed_events":{"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]},"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"]},"secret":{"type":"string","description":"Webhook signing secret used to verify event payloads. Prefixed with whsec_.","example":"whsec_abc123..."},"old_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous signing secret, available temporarily after rolling the secret to allow graceful migration","example":null},"old_secret_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the old secret expires, in ISO 8601 format. Null if no old secret exists.","example":null},"endpoint":{"type":"string","format":"uri","description":"URL where webhook events are delivered via HTTP POST","example":"https://example.com/webhooks"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional human-readable description for the webhook","example":"Production deploy notifications"},"created_by":{"type":"string","description":"Identifier of the API key that created the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the API key that last updated the webhook","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","is_enabled","allowed_events","secret","old_secret","old_secret_expired_at","endpoint","description","created_by","updated_by","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateWebhookV3","summary":"Update webhook","tags":["Webhooks"],"description":"Update one or more properties of an existing webhook. Only the provided fields are updated. Changes take effect immediately for subsequent event deliveries.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"allowed_events":{"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"],"minItems":1,"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]}},"endpoint":{"description":"URL where webhook events will be delivered via HTTP POST","example":"https://example.com/webhooks","type":"string","format":"uri"},"description":{"description":"Optional human-readable description for the webhook","example":"Production deploy notifications","anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Webhook identifier"}],"x-required-permissions":["WEBHOOK:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"is_enabled":{"type":"boolean","description":"Whether the webhook is currently active and receiving events","example":true},"allowed_events":{"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]},"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"]},"secret":{"type":"string","description":"Webhook signing secret used to verify event payloads. Prefixed with whsec_.","example":"whsec_abc123..."},"old_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous signing secret, available temporarily after rolling the secret to allow graceful migration","example":null},"old_secret_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the old secret expires, in ISO 8601 format. Null if no old secret exists.","example":null},"endpoint":{"type":"string","format":"uri","description":"URL where webhook events are delivered via HTTP POST","example":"https://example.com/webhooks"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional human-readable description for the webhook","example":"Production deploy notifications"},"created_by":{"type":"string","description":"Identifier of the API key that created the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the API key that last updated the webhook","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","is_enabled","allowed_events","secret","old_secret","old_secret_expired_at","endpoint","description","created_by","updated_by","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteWebhookV3","summary":"Delete webhook","tags":["Webhooks"],"description":"Permanently delete a webhook. The webhook will immediately stop receiving events. This action cannot be undone.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Webhook identifier"}],"x-required-permissions":["WEBHOOK:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Webhook deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/webhooks/{id}/toggle":{"post":{"operationId":"toggleWebhookV3","summary":"Toggle webhook","tags":["Webhooks"],"description":"Toggle a webhook between enabled and disabled states. Disabled webhooks stop receiving event deliveries until re-enabled.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Webhook identifier"}],"x-required-permissions":["WEBHOOK:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"is_enabled":{"type":"boolean","description":"Whether the webhook is currently active and receiving events","example":true},"allowed_events":{"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]},"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"]},"secret":{"type":"string","description":"Webhook signing secret used to verify event payloads. Prefixed with whsec_.","example":"whsec_abc123..."},"old_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous signing secret, available temporarily after rolling the secret to allow graceful migration","example":null},"old_secret_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the old secret expires, in ISO 8601 format. Null if no old secret exists.","example":null},"endpoint":{"type":"string","format":"uri","description":"URL where webhook events are delivered via HTTP POST","example":"https://example.com/webhooks"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional human-readable description for the webhook","example":"Production deploy notifications"},"created_by":{"type":"string","description":"Identifier of the API key that created the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the API key that last updated the webhook","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","is_enabled","allowed_events","secret","old_secret","old_secret_expired_at","endpoint","description","created_by","updated_by","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/webhooks/{id}/roll-secret":{"post":{"operationId":"rollWebhookSecretV3","summary":"Roll webhook secret","tags":["Webhooks"],"description":"Generate a new signing secret for the webhook. You can set a transition period (up to 24 hours) during which both old and new secrets are valid, allowing you to update your verification logic without downtime.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expire_in_hours":{"default":0,"description":"Number of hours before the old secret expires. Set to 0 to expire immediately. Maximum 24 hours. During the transition period, both old and new secrets are valid for signature verification.","example":6,"type":"integer","minimum":0,"maximum":24}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Webhook identifier"}],"x-required-permissions":["WEBHOOK:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"is_enabled":{"type":"boolean","description":"Whether the webhook is currently active and receiving events","example":true},"allowed_events":{"type":"array","items":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"]},"description":"List of event types this webhook subscribes to. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":["APP_DEPLOY","APP_CREATE"]},"secret":{"type":"string","description":"Webhook signing secret used to verify event payloads. Prefixed with whsec_.","example":"whsec_abc123..."},"old_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Previous signing secret, available temporarily after rolling the secret to allow graceful migration","example":null},"old_secret_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the old secret expires, in ISO 8601 format. Null if no old secret exists.","example":null},"endpoint":{"type":"string","format":"uri","description":"URL where webhook events are delivered via HTTP POST","example":"https://example.com/webhooks"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional human-readable description for the webhook","example":"Production deploy notifications"},"created_by":{"type":"string","description":"Identifier of the API key that created the webhook","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the API key that last updated the webhook","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the webhook was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","is_enabled","allowed_events","secret","old_secret","old_secret_expired_at","endpoint","description","created_by","updated_by","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/webhooks/{id}/deliveries":{"get":{"operationId":"listWebhookDeliveriesV3","summary":"List webhook event deliveries","tags":["Webhooks"],"description":"Retrieve a paginated list of event deliveries for a specific webhook. Each delivery represents an HTTP POST request sent to the webhook endpoint when a subscribed event occurred. Results are ordered by creation time, newest first.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Webhook identifier"}],"x-required-permissions":["WEBHOOK:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the event delivery","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"webhook_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the webhook this delivery belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"event_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the event that triggered this delivery","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"event_type":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"],"description":"Type of event that was delivered. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":"APP_DEPLOY"},"status":{"type":"string","enum":["PENDING","SUCCESS","FAILED"],"description":"Delivery status. `PENDING` - delivery is queued or in progress. `SUCCESS` - endpoint responded with a 2xx status. `FAILED` - endpoint returned a non-2xx status or the request timed out.","example":"SUCCESS"},"endpoint":{"type":"string","description":"URL where the event was delivered","example":"https://example.com/webhooks"},"payload":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JSON-encoded event payload that was sent to the endpoint","example":"{\"webhook_id\":\"...\",\"event_id\":\"...\",\"type\":\"APP_DEPLOY\",\"data\":{...}}"},"response":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Response body returned by the endpoint, truncated to 10,000 characters","example":"{\"received\":true}"},"response_status":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"null"}],"description":"HTTP status code returned by the endpoint","example":200},"response_time_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Time in milliseconds the endpoint took to respond","example":150},"sent_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the delivery was sent, in ISO 8601 format. Null if still pending.","example":"2025-01-30T00:00:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the event delivery was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the event delivery was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","webhook_id","event_id","event_type","status","endpoint","payload","response","response_status","response_time_ms","sent_at","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/webhooks/{id}/deliveries/{delivery_id}":{"get":{"operationId":"getWebhookDeliveryV3","summary":"Get webhook event delivery","tags":["Webhooks"],"description":"Retrieve the details of a specific event delivery, including the request payload sent to the endpoint, the response received, HTTP status code, and response time.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Webhook identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"delivery_id","required":true,"description":"Event delivery identifier"}],"x-required-permissions":["WEBHOOK:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the event delivery","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"webhook_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the webhook this delivery belongs to","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"event_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the event that triggered this delivery","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"event_type":{"type":"string","enum":["APP_CREATE","APP_UPDATE","APP_DELETE","APP_DEPLOY","DATABASE_CREATE","DATABASE_UPDATE","DATABASE_DELETE","STATIC_SITE_CREATE","STATIC_SITE_UPDATE","STATIC_SITE_DELETE","STATIC_SITE_DEPLOY"],"description":"Type of event that was delivered. `APP_CREATE` - application created. `APP_UPDATE` - application updated. `APP_DELETE` - application deleted. `APP_DEPLOY` - application deployed. `DATABASE_CREATE` - database created. `DATABASE_UPDATE` - database updated. `DATABASE_DELETE` - database deleted. `STATIC_SITE_CREATE` - static site created. `STATIC_SITE_UPDATE` - static site updated. `STATIC_SITE_DELETE` - static site deleted. `STATIC_SITE_DEPLOY` - static site deployed.","example":"APP_DEPLOY"},"status":{"type":"string","enum":["PENDING","SUCCESS","FAILED"],"description":"Delivery status. `PENDING` - delivery is queued or in progress. `SUCCESS` - endpoint responded with a 2xx status. `FAILED` - endpoint returned a non-2xx status or the request timed out.","example":"SUCCESS"},"endpoint":{"type":"string","description":"URL where the event was delivered","example":"https://example.com/webhooks"},"payload":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JSON-encoded event payload that was sent to the endpoint","example":"{\"webhook_id\":\"...\",\"event_id\":\"...\",\"type\":\"APP_DEPLOY\",\"data\":{...}}"},"response":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Response body returned by the endpoint, truncated to 10,000 characters","example":"{\"received\":true}"},"response_status":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"null"}],"description":"HTTP status code returned by the endpoint","example":200},"response_time_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Time in milliseconds the endpoint took to respond","example":150},"sent_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the delivery was sent, in ISO 8601 format. Null if still pending.","example":"2025-01-30T00:00:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the event delivery was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the event delivery was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","webhook_id","event_id","event_type","status","endpoint","payload","response","response_status","response_time_ms","sent_at","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/projects":{"get":{"operationId":"listProjectsV3","summary":"List projects","tags":["Projects"],"description":"Retrieve a paginated list of all projects the authenticated API key has access to. Results are ordered by name and can be paginated using the `limit` and `offset` query parameters. Use the `search` query parameter to narrow down the results by name.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"example":"my-app","type":"string","minLength":1,"maxLength":100},"in":"query","name":"search","required":false,"description":"Return only projects whose name or display name contains this text. Matching is case-insensitive."}],"x-required-permissions":["PROJECT:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-project-abc12"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Project"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","display_name","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createProjectV3","summary":"Create project","tags":["Projects"],"description":"Create a new project within the company. Projects are used to group related services (applications, databases, pipelines, object storage) together for easier management.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":64,"description":"Human-readable name for the project","example":"My Project"}},"required":["display_name"],"additionalProperties":false}}}},"x-required-permissions":["PROJECT:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-project-abc12"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Project"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","name","display_name","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/projects/{id}":{"get":{"operationId":"getProjectV3","summary":"Get project","tags":["Projects"],"description":"Retrieve the details of a specific project by its identifier.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Project identifier"}],"x-required-permissions":["PROJECT:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-project-abc12"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Project"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the service","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name of the service","example":"my-app-abc12"},"display_name":{"type":"string","description":"Human-readable name of the service","example":"My App"},"type":{"type":"string","enum":["app","database","pipeline","object-storage","load-balancer"],"description":"Type of service. `app` - application. `database` - database. `pipeline` - deployment pipeline. `object-storage` - object storage bucket. `load-balancer` - load balancer.","example":"app"}},"required":["id","name","display_name","type"],"additionalProperties":false},"description":"List of services assigned to this project"}},"required":["id","company_id","name","display_name","created_at","updated_at","services"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateProjectV3","summary":"Update project","tags":["Projects"],"description":"Update the display name of an existing project.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":64,"description":"New display name for the project","example":"My Updated Project"}},"required":["display_name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Project identifier"}],"x-required-permissions":["PROJECT:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.","example":"my-project-abc12"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Project"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the project was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","name","display_name","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteProjectV3","summary":"Delete project","tags":["Projects"],"description":"Permanently delete a project. All services (applications, databases, pipelines, object storage) currently in this project will be unlinked but not deleted. API key capabilities scoped to this project will also be removed.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Project identifier"}],"x-required-permissions":["PROJECT:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Project deleted"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/projects/{id}/services":{"post":{"operationId":"addServiceToProjectV3","summary":"Add service to project","tags":["Projects"],"description":"Add an existing service to a project. The service must belong to the same company as the project. When adding a pipeline, all applications in the pipeline stages are also moved into the project.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"service_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the service to add to the project","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"service_type":{"type":"string","enum":["app","database","pipeline","object-storage"],"description":"Type of service to add. `app` - application. `database` - database. `pipeline` - deployment pipeline (also moves all stage apps into the project). `object-storage` - object storage bucket.","example":"app"}},"required":["service_id","service_type"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Project identifier"}],"x-required-permissions":["PROJECT:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Service added to project"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/projects/{id}/services/{service_id}":{"delete":{"operationId":"removeServiceFromProjectV3","summary":"Remove service from project","tags":["Projects"],"description":"Remove a service from a project. The service itself is not deleted, only the association with the project is removed. When removing a pipeline, all applications in the pipeline stages are also removed from the project.","parameters":[{"schema":{"type":"string","enum":["app","database","pipeline","object-storage"],"example":"app"},"in":"query","name":"service_type","required":true,"description":"Type of service to remove. `app` - application. `database` - database. `pipeline` - deployment pipeline (also removes all stage apps from the project). `object-storage` - object storage bucket."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Project identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"service_id","required":true,"description":"Service identifier"}],"x-required-permissions":["PROJECT:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Service removed from project"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/api-keys":{"get":{"operationId":"listApiKeysV3","summary":"List API keys","tags":["API Keys"],"description":"Retrieve a paginated list of all API keys for the authenticated company. Results are ordered by creation date (newest first). Token values are masked for security.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"}],"x-required-permissions":["API_KEY:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the API key","example":"My API Key"},"is_enabled":{"type":"boolean","description":"Whether the API key is currently active and can be used for authentication"},"source":{"type":"string","enum":["DASHBOARD","CLI","EXTERNAL","SUPPORT_MCP","MCP"],"description":"How the API key was created - `DASHBOARD` created via the web dashboard, `CLI` created via CLI, `EXTERNAL` created via the API, `MCP` approved through the Sevalla MCP server"},"masked_token":{"type":"string","description":"Masked version of the token showing only the first 6 and last 4 characters","example":"svl_ab...wxyz"},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the role","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Role name","example":"COMPANY_ADMIN"},"description":{"type":"string","description":"Human-readable description of the role"}},"required":["id","name","description"],"additionalProperties":false},"description":"Pre-defined roles assigned to this API key"},"capabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the capability","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"permission":{"type":"string","description":"Permission string in RESOURCE:ACTION format","example":"APP:READ"},"resource_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional resource ID this capability is scoped to. Null means access to all resources","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["id","permission","resource_id"],"additionalProperties":false},"description":"Granular capabilities assigned to this API key"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key was last used for authentication, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key expires, in ISO 8601 format. Null means no expiration","example":"2025-01-01T00:00:00.000Z"},"old_token_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the previous token expires during rotation, in ISO 8601 format. Null if no rotation is in progress","example":"2024-01-02T00:00:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was created, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was last updated, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"}},"required":["id","company_id","name","is_enabled","source","masked_token","roles","capabilities","last_used_at","expired_at","old_token_expired_at","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"post":{"operationId":"createApiKeyV3","summary":"Create API key","tags":["API Keys"],"description":"Create a new API key with the specified roles and/or capabilities. The response includes the raw token value, which is only shown once - make sure to store it securely. At least one role or capability must be provided.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the API key","example":"My API Key"},"role_ids":{"description":"List of role IDs to assign to the API key. At least one role or capability is required","type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"capabilities":{"description":"List of granular capabilities to assign. At least one role or capability is required","type":"array","items":{"type":"object","properties":{"permission":{"type":"string","minLength":1,"description":"Permission string in RESOURCE:ACTION format, e.g. APP:READ, DATABASE:CREATE","example":"APP:READ"},"resource_id":{"description":"Optional resource ID to scope this capability to a specific resource","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string"}},"required":["permission"]}},"expired_at":{"description":"ISO 8601 timestamp when the API key should expire. Omit for no expiration","example":"2025-12-31T23:59:59Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["name"],"additionalProperties":false}}}},"x-required-permissions":["API_KEY:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"token":{"type":"string","description":"The raw API key token. This is the only time the full token is returned - store it securely","example":"svl_abc123..."},"name":{"type":"string","description":"Name of the created API key","example":"My API Key"}},"required":["id","token","name"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/api-keys/me":{"get":{"operationId":"getCurrentApiKeyV3","summary":"Get current API key","tags":["API Keys"],"description":"Retrieve the details of the API key used to authenticate the current request, including a unified list of its effective capabilities (the permissions from its roles merged with its custom capabilities). Use this to discover what the calling key is allowed to do without knowing its ID. Any valid API key can call this endpoint regardless of its permissions. The token value is masked for security.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the API key","example":"My API Key"},"is_enabled":{"type":"boolean","description":"Whether the API key is currently active and can be used for authentication"},"source":{"type":"string","enum":["DASHBOARD","CLI","EXTERNAL","SUPPORT_MCP","MCP"],"description":"How the API key was created - `DASHBOARD` created via the web dashboard, `CLI` created via CLI, `EXTERNAL` created via the API, `MCP` approved through the Sevalla MCP server"},"masked_token":{"type":"string","description":"Masked version of the token showing only the first 6 and last 4 characters","example":"svl_ab...wxyz"},"capabilities":{"type":"array","items":{"type":"object","properties":{"permission":{"type":"string","description":"Permission string in RESOURCE:ACTION format","example":"APP:READ"},"resource_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Resource ID this capability is scoped to. Null means the permission applies to all resources","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["permission","resource_id"],"additionalProperties":false},"description":"The key's effective capabilities, combining permissions granted by its roles (which always apply to all resources, so resource_id is null) with its custom capabilities. When a permission is granted for all resources, any resource-scoped grant for the same permission is omitted as redundant."},"last_used_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key was last used for authentication, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key expires, in ISO 8601 format. Null means no expiration","example":"2025-01-01T00:00:00.000Z"},"old_token_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the previous token expires during rotation, in ISO 8601 format. Null if no rotation is in progress","example":"2024-01-02T00:00:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was created, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was last updated, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"}},"required":["id","company_id","name","is_enabled","source","masked_token","capabilities","last_used_at","expired_at","old_token_expired_at","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/api-keys/{id}":{"get":{"operationId":"getApiKeyV3","summary":"Get API key","tags":["API Keys"],"description":"Retrieve the full details of a single API key including its roles, capabilities, and usage metadata. The token value is masked for security.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"API key identifier"}],"x-required-permissions":["API_KEY:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the API key","example":"My API Key"},"is_enabled":{"type":"boolean","description":"Whether the API key is currently active and can be used for authentication"},"source":{"type":"string","enum":["DASHBOARD","CLI","EXTERNAL","SUPPORT_MCP","MCP"],"description":"How the API key was created - `DASHBOARD` created via the web dashboard, `CLI` created via CLI, `EXTERNAL` created via the API, `MCP` approved through the Sevalla MCP server"},"masked_token":{"type":"string","description":"Masked version of the token showing only the first 6 and last 4 characters","example":"svl_ab...wxyz"},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the role","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Role name","example":"COMPANY_ADMIN"},"description":{"type":"string","description":"Human-readable description of the role"}},"required":["id","name","description"],"additionalProperties":false},"description":"Pre-defined roles assigned to this API key"},"capabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the capability","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"permission":{"type":"string","description":"Permission string in RESOURCE:ACTION format","example":"APP:READ"},"resource_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional resource ID this capability is scoped to. Null means access to all resources","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["id","permission","resource_id"],"additionalProperties":false},"description":"Granular capabilities assigned to this API key"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key was last used for authentication, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key expires, in ISO 8601 format. Null means no expiration","example":"2025-01-01T00:00:00.000Z"},"old_token_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the previous token expires during rotation, in ISO 8601 format. Null if no rotation is in progress","example":"2024-01-02T00:00:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was created, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was last updated, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"}},"required":["id","company_id","name","is_enabled","source","masked_token","roles","capabilities","last_used_at","expired_at","old_token_expired_at","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateApiKeyV3","summary":"Update API key","tags":["API Keys"],"description":"Update an API key's name, roles, or capabilities. When roles or capabilities are provided, they fully replace the existing values. An API key cannot update itself.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"New name for the API key","example":"Updated Key Name","type":"string","minLength":1,"maxLength":255},"role_ids":{"description":"New list of role IDs. Replaces all existing roles when provided","type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"capabilities":{"description":"New list of capabilities. Replaces all existing capabilities when provided","type":"array","items":{"type":"object","properties":{"permission":{"type":"string","minLength":1,"description":"Permission string in RESOURCE:ACTION format, e.g. APP:READ, DATABASE:CREATE","example":"APP:READ"},"resource_id":{"description":"Optional resource ID to scope this capability to a specific resource","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string"}},"required":["permission"]}}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"API key identifier"}],"x-required-permissions":["API_KEY:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company that owns this API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable name for the API key","example":"My API Key"},"is_enabled":{"type":"boolean","description":"Whether the API key is currently active and can be used for authentication"},"source":{"type":"string","enum":["DASHBOARD","CLI","EXTERNAL","SUPPORT_MCP","MCP"],"description":"How the API key was created - `DASHBOARD` created via the web dashboard, `CLI` created via CLI, `EXTERNAL` created via the API, `MCP` approved through the Sevalla MCP server"},"masked_token":{"type":"string","description":"Masked version of the token showing only the first 6 and last 4 characters","example":"svl_ab...wxyz"},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the role","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Role name","example":"COMPANY_ADMIN"},"description":{"type":"string","description":"Human-readable description of the role"}},"required":["id","name","description"],"additionalProperties":false},"description":"Pre-defined roles assigned to this API key"},"capabilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the capability","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"permission":{"type":"string","description":"Permission string in RESOURCE:ACTION format","example":"APP:READ"},"resource_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional resource ID this capability is scoped to. Null means access to all resources","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"}},"required":["id","permission","resource_id"],"additionalProperties":false},"description":"Granular capabilities assigned to this API key"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key was last used for authentication, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the API key expires, in ISO 8601 format. Null means no expiration","example":"2025-01-01T00:00:00.000Z"},"old_token_expired_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Timestamp when the previous token expires during rotation, in ISO 8601 format. Null if no rotation is in progress","example":"2024-01-02T00:00:00.000Z"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was created, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the API key was last updated, in ISO 8601 format","example":"2024-01-01T00:00:00.000Z"}},"required":["id","company_id","name","is_enabled","source","masked_token","roles","capabilities","last_used_at","expired_at","old_token_expired_at","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteApiKeyV3","summary":"Delete API key","tags":["API Keys"],"description":"Permanently delete an API key. This immediately revokes all access for this key and cannot be undone. An API key cannot delete itself.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"API key identifier"}],"x-required-permissions":["API_KEY:DELETE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"API key \"My Key\" deleted"}},"required":["message"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/api-keys/{id}/toggle":{"post":{"operationId":"toggleApiKeyV3","summary":"Toggle API key","tags":["API Keys"],"description":"Enable or disable an API key. A disabled API key cannot be used for authentication until it is re-enabled. An API key cannot toggle itself.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"API key identifier"}],"x-required-permissions":["API_KEY:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"API key \"My Key\" disabled"},"is_enabled":{"type":"boolean","description":"New enabled state of the API key"}},"required":["message","is_enabled"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/api-keys/{id}/rotate":{"post":{"operationId":"rotateApiKeyV3","summary":"Rotate API key","tags":["API Keys"],"description":"Generate a new token for an API key. The old token can optionally remain valid for a transition period (up to 168 hours) to allow graceful migration. The response includes the new raw token, which is only shown once. An API key cannot rotate itself.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"old_token_ttl_hours":{"default":0,"description":"Number of hours to keep the old token valid after rotation (0-168). Set to 0 to immediately invalidate the old token","example":24,"type":"integer","minimum":0,"maximum":168}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"API key identifier"}],"x-required-permissions":["API_KEY:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The new raw API key token. This is the only time the full token is returned - store it securely","example":"svl_abc123..."},"name":{"type":"string","description":"Name of the rotated API key","example":"My API Key"}},"required":["token","name"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/api-keys/validate":{"get":{"operationId":"validateApiKeyV3","summary":"Validate API key","tags":["API Keys"],"description":"Validate the provided API key and return its details including name, expiration, associated company, and current status. Use this endpoint to verify that an API key is valid and active before making other API calls.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the API key","example":"My API Key"},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}],"description":"Expiration timestamp in ISO 8601 format, or null if no expiration","example":"2025-01-30T00:00:00.000Z"},"company_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Identifier of the company associated with the API key","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"status":{"type":"string","description":"Current status of the API key","example":"active"}},"required":["name","expires_at","company_id","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers":{"post":{"operationId":"createLoadBalancerV3","summary":"Create load balancer","tags":["Load balancers"],"description":"Create a new load balancer. The load balancer is created with no destinations - add them separately using the create destination endpoint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2,"maxLength":64,"description":"Human-readable name for the load balancer. Must be between 2 and 64 characters.","example":"My Load Balancer"},"type":{"description":"Routing type for the load balancer. Defaults to `DEFAULT`. `DEFAULT` - standard round-robin or weighted routing. `GEO` - geographic routing based on client location.","example":"DEFAULT","type":"string","enum":["DEFAULT","GEO"]},"project_id":{"description":"Identifier of the project to group this load balancer under. When omitted, the load balancer is not assigned to any project.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["display_name"],"additionalProperties":false}}}},"x-required-permissions":["LOAD_BALANCER:CREATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this load balancer is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Load Balancer"},"name":{"type":"string","description":"Unique system name auto-generated from the display name","example":"my-load-balancer"},"type":{"type":"string","enum":["DEFAULT","GEO"],"description":"Load balancer routing type. `DEFAULT` - standard round-robin or weighted routing. `GEO` - geographic routing based on client location.","example":"DEFAULT"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","display_name","name","type","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"get":{"operationId":"listLoadBalancersV3","summary":"List load balancers","tags":["Load balancers"],"description":"Retrieve a paginated list of all load balancers the authenticated API key has access to. Results are ordered by creation date (newest first) and can be paginated using the `limit` and `offset` query parameters.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"}],"x-required-permissions":["LOAD_BALANCER:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this load balancer is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Load Balancer"},"name":{"type":"string","description":"Unique system name auto-generated from the display name","example":"my-load-balancer"},"type":{"type":"string","enum":["DEFAULT","GEO"],"description":"Load balancer routing type. `DEFAULT` - standard round-robin or weighted routing. `GEO` - geographic routing based on client location.","example":"DEFAULT"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","display_name","name","type","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}":{"get":{"operationId":"getLoadBalancerV3","summary":"Get load balancer","tags":["Load balancers"],"description":"Retrieve the full details of a load balancer including its routing type and custom route configuration.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this load balancer is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Load Balancer"},"name":{"type":"string","description":"Unique system name auto-generated from the display name","example":"my-load-balancer"},"type":{"type":"string","enum":["DEFAULT","GEO"],"description":"Load balancer routing type. `DEFAULT` - standard round-robin or weighted routing. `GEO` - geographic routing based on client location.","example":"DEFAULT"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","display_name","name","type","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateLoadBalancerV3","summary":"Update load balancer","tags":["Load balancers"],"description":"Update one or more properties of an existing load balancer. Only include the fields you want to change - omitted fields are left unchanged.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"description":"Human-readable name shown in the dashboard and API responses","example":"My Load Balancer","type":"string","minLength":2,"maxLength":64},"type":{"description":"Routing type. `DEFAULT` - standard round-robin or weighted routing. `GEO` - geographic routing based on client location.","example":"DEFAULT","type":"string","enum":["DEFAULT","GEO"]},"project_id":{"description":"Identifier of the project to group this load balancer under. Set to `null` to remove from a project.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"company_id":{"type":"string","description":"Identifier of the company that owns this load balancer","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"project_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}],"description":"Identifier of the project this load balancer is grouped under","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"display_name":{"type":"string","description":"Human-readable name shown in the dashboard and API responses","example":"My Load Balancer"},"name":{"type":"string","description":"Unique system name auto-generated from the display name","example":"my-load-balancer"},"type":{"type":"string","enum":["DEFAULT","GEO"],"description":"Load balancer routing type. `DEFAULT` - standard round-robin or weighted routing. `GEO` - geographic routing based on client location.","example":"DEFAULT"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the load balancer was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","company_id","project_id","display_name","name","type","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteLoadBalancerV3","summary":"Delete load balancer","tags":["Load balancers"],"description":"Permanently delete a load balancer and all its destinations. This operation is irreversible.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:DELETE"],"responses":{"204":{"description":"Load balancer deleted successfully"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/rate-limit":{"get":{"operationId":"getLoadBalancerRateLimitV3","summary":"Get rate limit","tags":["Load balancers"],"description":"Retrieve the current rate limiting configuration for a load balancer. Rate limiting restricts each client IP to 100 requests per minute per hostname and applies the configured action when the limit is exceeded. If rate limiting has never been configured, returns the default state: disabled with the `challenge` action.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting is currently active","example":false},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action applied when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"put":{"operationId":"updateLoadBalancerRateLimitV3","summary":"Update rate limit","tags":["Load balancers"],"description":"Update the rate limiting configuration for a load balancer. Rate limiting restricts each client IP to 100 requests per minute per hostname across the load balancer domains. When a client exceeds the limit, the configured action is applied: `challenge` requires the visitor to pass a managed challenge for 5 minutes, `throttle` blocks requests only while the rate stays above the limit, and `ban` blocks the client IP for 5 minutes. Changes are synced to the edge network as part of the request. Returns the updated rate limit state.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting should be active","example":true},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action to apply when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"]}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"is_enabled":{"type":"boolean","description":"Whether rate limiting is currently active","example":true},"action":{"type":"string","enum":["challenge","throttle","ban"],"description":"Mitigation action applied when a client IP exceeds the limit of 100 requests per minute. `challenge` - visitors must pass a managed challenge for 5 minutes. `throttle` - requests are blocked only while the rate stays above the limit. `ban` - the client IP is blocked for 5 minutes.","example":"challenge"}},"required":["is_enabled","action"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/destinations":{"post":{"operationId":"createLoadBalancerDestinationV3","summary":"Create load balancer destination","tags":["Load balancers"],"description":"Add a new destination to a load balancer. The destination starts enabled and will immediately begin receiving traffic according to the load balancer routing type.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"service_id":{"description":"Identifier of the backing service. Required for APP, STATIC_SITE, OBJECT_STORAGE, and LOAD_BALANCER types. Must not be set for EXTERNAL type.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657","type":"string","minLength":1},"service_type":{"type":"string","enum":["APP","STATIC_SITE","OBJECT_STORAGE","EXTERNAL","LOAD_BALANCER"],"description":"Type of the backing service. `APP` - application. `STATIC_SITE` - static site. `OBJECT_STORAGE` - object storage bucket. `EXTERNAL` - external URL. `LOAD_BALANCER` - nested load balancer.","example":"APP"},"weight":{"description":"Traffic weight for weighted routing. Higher values receive proportionally more traffic.","example":100,"type":"integer","minimum":0,"maximum":10000},"url":{"description":"External URL, required when service_type is EXTERNAL","example":"https://example.com","type":"string"},"latitude":{"description":"Geographic latitude for GEO routing","example":37.7749,"type":"number","minimum":-90,"maximum":90},"longitude":{"description":"Geographic longitude for GEO routing","example":-122.4194,"type":"number","minimum":-180,"maximum":180}},"required":["service_type"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the destination","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"service_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the backing service for this destination. Null for EXTERNAL type destinations.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"service_type":{"type":"string","enum":["APP","STATIC_SITE","OBJECT_STORAGE","EXTERNAL","LOAD_BALANCER"],"description":"Type of the backing service. `APP` - application. `STATIC_SITE` - static site. `OBJECT_STORAGE` - object storage bucket. `EXTERNAL` - external URL. `LOAD_BALANCER` - nested load balancer.","example":"APP"},"is_enabled":{"type":"boolean","description":"Whether this destination is currently receiving traffic","example":true},"weight":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000},{"type":"null"}],"description":"Traffic weight for weighted routing. Higher values receive proportionally more traffic.","example":100},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"External URL for EXTERNAL service type destinations","example":null},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90},{"type":"null"}],"description":"Geographic latitude for GEO routing","example":null},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180},{"type":"null"}],"description":"Geographic longitude for GEO routing","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the destination was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the destination was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","service_id","service_type","is_enabled","weight","url","latitude","longitude","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"get":{"operationId":"listLoadBalancerDestinationsV3","summary":"List load balancer destinations","tags":["Load balancers"],"description":"Retrieve a paginated list of all destinations configured for a load balancer.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the destination","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"service_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Identifier of the backing service for this destination. Null for EXTERNAL type destinations.","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"service_type":{"type":"string","enum":["APP","STATIC_SITE","OBJECT_STORAGE","EXTERNAL","LOAD_BALANCER"],"description":"Type of the backing service. `APP` - application. `STATIC_SITE` - static site. `OBJECT_STORAGE` - object storage bucket. `EXTERNAL` - external URL. `LOAD_BALANCER` - nested load balancer.","example":"APP"},"is_enabled":{"type":"boolean","description":"Whether this destination is currently receiving traffic","example":true},"weight":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000},{"type":"null"}],"description":"Traffic weight for weighted routing. Higher values receive proportionally more traffic.","example":100},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"External URL for EXTERNAL service type destinations","example":null},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90},{"type":"null"}],"description":"Geographic latitude for GEO routing","example":null},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180},{"type":"null"}],"description":"Geographic longitude for GEO routing","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the destination was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the destination was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","service_id","service_type","is_enabled","weight","url","latitude","longitude","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/destinations/{destination_id}":{"delete":{"operationId":"deleteLoadBalancerDestinationV3","summary":"Delete load balancer destination","tags":["Load balancers"],"description":"Remove a destination from a load balancer. Traffic will no longer be routed to this destination. This action cannot be undone.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"destination_id","required":true,"description":"Destination identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"204":{"description":"Destination deleted successfully"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/destinations/{destination_id}/toggle":{"post":{"operationId":"toggleLoadBalancerDestinationV3","summary":"Toggle load balancer destination","tags":["Load balancers"],"description":"Enable or disable a load balancer destination. When disabled, the destination stops receiving traffic.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"destination_id","required":true,"description":"Destination identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Destination toggled"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/domains":{"post":{"operationId":"addLoadBalancerDomainV3","summary":"Add load balancer domain","tags":["Load balancers"],"description":"Add a custom domain to a load balancer. After adding, configure your DNS records as indicated in the response to complete domain verification. The domain status will transition from `verification` to `pointing` to `active` as DNS propagates.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain_name":{"type":"string","minLength":1,"description":"The custom domain name to add to the load balancer","example":"lb.example.com"},"is_wildcard":{"description":"Whether this should be a wildcard domain that matches all subdomains","example":false,"type":"boolean"},"custom_ssl_cert":{"description":"Custom SSL certificate in PEM format. When provided, the platform uses this certificate instead of auto-provisioning one.","example":"-----BEGIN CERTIFICATE-----...","type":"string"},"custom_ssl_key":{"description":"Private key for the custom SSL certificate in PEM format. Required when custom_ssl_cert is provided.","example":"-----BEGIN PRIVATE KEY-----...","type":"string"}},"required":["domain_name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"get":{"operationId":"listLoadBalancerDomainsV3","summary":"List load balancer domains","tags":["Load balancers"],"description":"Retrieve a paginated list of all domains (both system and custom) associated with a load balancer.","parameters":[{"schema":{"default":25,"example":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false,"description":"Maximum number of items per page"},{"schema":{"default":0,"example":0,"type":"integer","minimum":0,"maximum":10000},"in":"query","name":"offset","required":false,"description":"Number of items to skip"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"}],"x-required-permissions":["LOAD_BALANCER:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false},"description":"List of items"},"total":{"type":"integer","minimum":0,"maximum":10000,"description":"Total number of items matching the query","example":42},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Current pagination offset","example":0},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Current pagination limit","example":25}},"required":["data","total","offset","limit"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/domains/{domain_id}":{"get":{"operationId":"getLoadBalancerDomainV3","summary":"Get load balancer domain","tags":["Load balancers"],"description":"Retrieve the details of a specific domain associated with a load balancer, including its verification status, DNS records, and configuration.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["LOAD_BALANCER:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteLoadBalancerDomainV3","summary":"Delete load balancer domain","tags":["Load balancers"],"description":"Remove a custom domain from a load balancer. System domains cannot be deleted - use the toggle endpoint to disable them instead. This action cannot be undone.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"204":{"description":"Domain deleted successfully"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateLoadBalancerDomainV3","summary":"Update load balancer system domain","tags":["Load balancers"],"description":"Update the subdomain name of a system domain. Only applies to system domains - use the add/delete endpoints to manage custom domains.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"New subdomain name for the system domain","example":"my-lb"}},"required":["name"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the domain","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"name":{"type":"string","description":"Domain name, either a custom domain or a system-assigned subdomain","example":"app.example.com"},"status":{"type":"string","description":"Current verification and pointing status of the domain. `VERIFICATION` - domain ownership is being verified. `POINTING` - domain is verified but DNS is not yet pointing to the platform. `ACTIVE` - domain is fully configured and serving traffic. `TIMED_OUT` - verification or pointing timed out and needs to be refreshed.","example":"ACTIVE"},"type":{"type":"string","description":"Domain type. `SYSTEM` - platform-assigned domain that can be toggled on/off. `CUSTOM` - user-added domain with custom DNS configuration.","example":"CUSTOM"},"is_enabled":{"type":"boolean","description":"Whether the domain is currently enabled. Only applicable to system domains.","example":true},"is_wildcard":{"type":"boolean","description":"Whether this is a wildcard domain that matches all subdomains","example":false},"is_primary":{"type":"boolean","description":"Whether this domain is the primary domain for the service. The primary domain is used for canonical URLs.","example":true},"dns_records":{"anyOf":[{},{"type":"null"}],"description":"DNS records that need to be configured for this domain. Null when DNS configuration is not required.","example":[{"type":"CNAME","name":"app.example.com","value":"cname.sevalla.com"}]},"errors":{"anyOf":[{},{"type":"null"}],"description":"Any errors encountered during domain verification or configuration","example":null},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was created, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Timestamp when the domain was last modified, in ISO 8601 format","example":"2025-01-30T00:00:00.000Z"}},"required":["id","name","status","type","is_enabled","is_wildcard","is_primary","dns_records","errors","created_at","updated_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/domains/{domain_id}/refresh-status":{"post":{"operationId":"refreshLoadBalancerDomainStatusV3","summary":"Refresh load balancer domain status","tags":["Load balancers"],"description":"Trigger a re-check of the domain verification and DNS pointing status. Use this after updating your DNS records to speed up the verification process.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain status refresh initiated"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/domains/{domain_id}/set-primary":{"post":{"operationId":"setLoadBalancerPrimaryDomainV3","summary":"Set primary load balancer domain","tags":["Load balancers"],"description":"Set a domain as the primary domain for the load balancer. The primary domain is used for canonical URLs. Only one domain can be primary at a time - the previously primary domain is automatically demoted.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"Domain set as primary"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/load-balancers/{id}/domains/{domain_id}/toggle":{"post":{"operationId":"toggleLoadBalancerSystemDomainV3","summary":"Toggle load balancer system domain","tags":["Load balancers"],"description":"Enable or disable a system domain for the load balancer. When disabled, the system domain stops serving traffic. Only applies to system domains - custom domains cannot be toggled.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"id","required":true,"description":"Load balancer identifier"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"in":"path","name":"domain_id","required":true,"description":"Domain identifier"}],"x-required-permissions":["LOAD_BALANCER:UPDATE"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Confirmation message","example":"System domain toggled"}},"required":["message"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Not found"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":404},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/auth/device-codes":{"post":{"operationId":"createDeviceCodeV3","summary":"Create device code","tags":["Device Authorization"],"description":"Request a new device authorization code. The external client displays this code to the user, who then visits the Sevalla dashboard to approve the device. The client polls the GET endpoint until the code is approved, denied, or expired. Codes expire after 5 minutes. Maximum 5 active codes per IP address. Send the optional `x-sevalla-client` header to name the client that requests access, for example `claude-code`.","security":[],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"The device code to display to the user. The user enters this code in the Sevalla dashboard to authorize the device","example":"ABCD1234"},"expires_at":{"type":"string","description":"ISO 8601 timestamp when the device code expires. Codes are valid for 5 minutes","example":"2025-06-01T12:05:00.000Z"}},"required":["code","expires_at"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Too many requests"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":429},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/auth/device-codes/{code}":{"get":{"operationId":"pollDeviceCodeV3","summary":"Poll device code status","tags":["Device Authorization"],"description":"Check the current status of a device authorization code. The external client should poll this endpoint at regular intervals (recommended every 5 seconds) until the status changes from `pending`. When approved, the response includes the API key token for a one-time retrieval - the token cannot be fetched again.","parameters":[{"schema":{"type":"string","minLength":1,"example":"ABCD1234"},"in":"path","name":"code","required":true,"description":"The device code to check the status of"}],"security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","denied","expired"],"description":"Current status of the device code. `pending` - waiting for user action, `approved` - user approved and token is included, `denied` - user explicitly rejected the request, `expired` - code has expired","example":"pending"},"token":{"description":"The API key token, only present when status is `approved`. This is the only time the token is returned - store it securely","example":"svl_abc123...","type":"string"}},"required":["status"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Bad request"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":400},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/git/providers":{"get":{"operationId":"listGitProvidersV3","summary":"List Git providers","tags":["Git"],"description":"Retrieve available Git providers (GitHub, Bitbucket, GitLab) with their OAuth connect URLs. Use the connect_url to initiate the OAuth flow and link a Git account. GitHub also includes a settings_url for managing repository access permissions.","responses":{"200":{"description":"List of available Git providers","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["github","bitbucket","gitlab"],"description":"Git provider identifier"},"display_name":{"type":"string","description":"Human-readable provider name"},"connect_url":{"type":"string","description":"OAuth authorization URL to connect the provider to the user account"},"settings_url":{"description":"URL to manage repository access settings. Only available for GitHub.","type":"string"}},"required":["provider","display_name","connect_url"],"additionalProperties":false},"description":"List of available Git providers"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}},"/users":{"get":{"operationId":"listUsersV3","summary":"List company users","tags":["Users"],"description":"Retrieve the list of users belonging to the company associated with the authenticated API key.","x-required-permissions":["COMPANY:READ"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Unique identifier for the user","example":"fb5e5168-4281-4bec-94c5-0d1584e9e657"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"User email address","example":"user@example.com"},"image":{"type":"string","format":"uri","description":"URL of the user avatar image","example":"https://avatars.githubusercontent.com/u/12345"},"full_name":{"type":"string","description":"Full name of the user","example":"John Doe"}},"required":["id","email","image","full_name"],"additionalProperties":false},"description":"List of company users"}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Unauthorized"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":401},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"This API key is missing the <RESOURCE>:<ACTION> permission. Grant it to the key or use a key that has it."},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":403},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message","example":"Internal Server Error"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code","example":500},"data":{"type":"object","properties":{"code":{"description":"Error tracking code for support reference","example":"err-abc-123","type":"string"},"message":{"description":"Additional error details or instructions","example":"If you need assistance, please contact support and provide this error code.","type":"string"}},"additionalProperties":false}},"required":["message","status"],"additionalProperties":false}}}}}}}},"servers":[{"url":"https://api.sevalla.com/v3"}],"security":[{"bearerAuth":[]}]}