Koyeb Deployments API
The Deployments API from Koyeb — 5 operation(s) for deployments.
The Deployments API from Koyeb — 5 operation(s) for deployments.
swagger: '2.0'
info:
title: Koyeb Rest activity Deployments API
description: 'The Koyeb API allows you to interact with the Koyeb platform in a simple, programmatic way using conventional HTTP requests.
'
version: 1.0.0
host: app.koyeb.com
schemes:
- https
security:
- Bearer: []
tags:
- name: Deployments
paths:
/v1/deployment/{id}/scaling:
get:
summary: Get Deployment Scaling
operationId: GetDeploymentScaling
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/GetDeploymentScalingReply'
'400':
description: Validation error
schema:
$ref: '#/definitions/ErrorWithFields'
'401':
description: Returned when the token is not valid.
schema:
$ref: '#/definitions/Error'
'403':
description: Returned when the user does not have permission to access the resource.
schema:
$ref: '#/definitions/Error'
'404':
description: Returned when the resource does not exist.
schema:
$ref: '#/definitions/Error'
'500':
description: Returned in case of server error.
schema:
$ref: '#/definitions/Error'
'503':
description: Service is unavailable.
schema:
$ref: '#/definitions/Error'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/google.rpc.Status'
parameters:
- name: id
in: path
required: true
type: string
- name: region
description: (Optional) Filter on region
in: query
required: false
type: string
- name: replica_index
description: (Optional) Filter on replica_index
in: query
required: false
type: integer
format: int64
tags:
- Deployments
/v1/deployment_events:
get:
summary: List Deployment events
operationId: ListDeploymentEvents
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/ListDeploymentEventsReply'
'400':
description: Validation error
schema:
$ref: '#/definitions/ErrorWithFields'
'401':
description: Returned when the token is not valid.
schema:
$ref: '#/definitions/Error'
'403':
description: Returned when the user does not have permission to access the resource.
schema:
$ref: '#/definitions/Error'
'404':
description: Returned when the resource does not exist.
schema:
$ref: '#/definitions/Error'
'500':
description: Returned in case of server error.
schema:
$ref: '#/definitions/Error'
'503':
description: Service is unavailable.
schema:
$ref: '#/definitions/Error'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/google.rpc.Status'
parameters:
- name: deployment_id
description: (Optional) Filter on deployment id
in: query
required: false
type: string
- name: types
description: (Optional) Filter on deployment event types
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
- name: limit
description: (Optional) The number of items to return
in: query
required: false
type: string
- name: offset
description: (Optional) The offset in the list of item to return
in: query
required: false
type: string
- name: order
description: (Optional) Sorts the list in the ascending or the descending order
in: query
required: false
type: string
tags:
- Deployments
/v1/deployments:
get:
summary: List Deployments
operationId: ListDeployments
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/ListDeploymentsReply'
'400':
description: Validation error
schema:
$ref: '#/definitions/ErrorWithFields'
'401':
description: Returned when the token is not valid.
schema:
$ref: '#/definitions/Error'
'403':
description: Returned when the user does not have permission to access the resource.
schema:
$ref: '#/definitions/Error'
'404':
description: Returned when the resource does not exist.
schema:
$ref: '#/definitions/Error'
'500':
description: Returned in case of server error.
schema:
$ref: '#/definitions/Error'
'503':
description: Service is unavailable.
schema:
$ref: '#/definitions/Error'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/google.rpc.Status'
parameters:
- name: app_id
description: (Optional) Filter on application id
in: query
required: false
type: string
- name: service_id
description: (Optional) Filter on service id
in: query
required: false
type: string
- name: limit
description: (Optional) The number of items to return
in: query
required: false
type: string
- name: offset
description: (Optional) The offset in the list of item to return
in: query
required: false
type: string
- name: statuses
description: (Optional) Filter on statuses
in: query
required: false
type: array
items:
type: string
enum:
- PENDING
- PROVISIONING
- SCHEDULED
- CANCELING
- CANCELED
- ALLOCATING
- STARTING
- HEALTHY
- DEGRADED
- UNHEALTHY
- STOPPING
- STOPPED
- ERRORING
- ERROR
- STASHED
- SLEEPING
collectionFormat: multi
tags:
- Deployments
/v1/deployments/{id}:
get:
summary: Get Deployment
operationId: GetDeployment
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/GetDeploymentReply'
'400':
description: Validation error
schema:
$ref: '#/definitions/ErrorWithFields'
'401':
description: Returned when the token is not valid.
schema:
$ref: '#/definitions/Error'
'403':
description: Returned when the user does not have permission to access the resource.
schema:
$ref: '#/definitions/Error'
'404':
description: Returned when the resource does not exist.
schema:
$ref: '#/definitions/Error'
'500':
description: Returned in case of server error.
schema:
$ref: '#/definitions/Error'
'503':
description: Service is unavailable.
schema:
$ref: '#/definitions/Error'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/google.rpc.Status'
parameters:
- name: id
description: The id of the deployment
in: path
required: true
type: string
tags:
- Deployments
/v1/deployments/{id}/cancel:
post:
summary: Cancel Deployment
description: "Deployment cancellation is allowed for the following status:\n - pending\n - provisioning\n - scheduled"
operationId: CancelDeployment
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/CancelDeploymentReply'
'400':
description: Validation error
schema:
$ref: '#/definitions/ErrorWithFields'
'401':
description: Returned when the token is not valid.
schema:
$ref: '#/definitions/Error'
'403':
description: Returned when the user does not have permission to access the resource.
schema:
$ref: '#/definitions/Error'
'404':
description: Returned when the resource does not exist.
schema:
$ref: '#/definitions/Error'
'500':
description: Returned in case of server error.
schema:
$ref: '#/definitions/Error'
'503':
description: Service is unavailable.
schema:
$ref: '#/definitions/Error'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/google.rpc.Status'
parameters:
- name: id
description: The id of the deployment to cancel.
in: path
required: true
type: string
tags:
- Deployments
definitions:
GitSource:
type: object
properties:
repository:
type: string
description: 'A url to a git repository (contains the provider as well) .e.g: github.com/koyeb/test.'
branch:
type: string
title: A git branch that will be tracked for new commits and deployments will be created
tag:
type: string
title: A git tag that should be built
sha:
type: string
title: A git commit that should be built (useful for pinning to a commit, this will always be set when a deployment is created by a code push)
build_command:
type: string
title: A command used to override the build command, run after all build steps — deprecated, use buildpack.build_command instead
run_command:
type: string
title: A command used to override the default run command - deprecated, use buildpack.run_command instead
no_deploy_on_push:
type: boolean
title: A flag to disable a new deployment when a push event is detected
workdir:
type: string
title: A subdirectory to use as the build directory
buildpack:
$ref: '#/definitions/BuildpackBuilder'
docker:
$ref: '#/definitions/DockerBuilder'
DeploymentListItem:
type: object
properties:
id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
allocated_at:
type: string
format: date-time
started_at:
type: string
format: date-time
succeeded_at:
type: string
format: date-time
terminated_at:
type: string
format: date-time
organization_id:
type: string
app_id:
type: string
service_id:
type: string
parent_id:
type: string
child_id:
type: string
status:
$ref: '#/definitions/Deployment.Status'
metadata:
$ref: '#/definitions/DeploymentMetadata'
definition:
$ref: '#/definitions/DeploymentDefinition'
messages:
type: array
items:
type: string
provisioning_info:
$ref: '#/definitions/DeploymentProvisioningInfo'
database_info:
$ref: '#/definitions/DeploymentDatabaseInfo'
version:
type: string
format: uint64
deployment_group:
type: string
NeonPostgresDatabase.NeonRole:
type: object
properties:
name:
type: string
secret:
type: string
BasicAuthPolicy:
type: object
properties:
username:
type: string
password:
type: string
DatabaseDeploymentMetadata:
type: object
properties:
neon_postgres:
$ref: '#/definitions/NeonPostgresDatabaseDeploymentMetadata'
TriggerDeploymentMetadata.ActorType:
type: string
enum:
- UNKNOWN_ACTOR
- USER
- SYSTEM
default: UNKNOWN_ACTOR
DeploymentProvisioningInfo.Stage.BuildAttempt:
type: object
properties:
id:
type: integer
format: int64
status:
$ref: '#/definitions/DeploymentProvisioningInfo.Stage.Status'
messages:
type: array
items:
type: string
started_at:
type: string
format: date-time
finished_at:
type: string
format: date-time
steps:
type: array
items:
$ref: '#/definitions/DeploymentProvisioningInfo.Stage.BuildAttempt.BuildStep'
image_pushed:
type: boolean
internal_failure:
type: boolean
retryable_failure:
type: boolean
wait_completion:
type: boolean
description: This flag is used to finalize the build, and continue the deployment in case of success, or cancel and potentially retry the build in case of failure.
CancelDeploymentReply:
type: object
Deployment.Role:
type: string
enum:
- INVALID
- ACTIVE
- UPCOMING
- CURRENT
default: INVALID
DeploymentScalingTargetSleepIdleDelay:
type: object
properties:
value:
type: integer
format: int64
description: 'DEPRECATED: use deep_sleep_value instead.
Delay in seconds after which a service which received 0 request is put to deep sleep.'
deep_sleep_value:
type: integer
format: int64
description: Delay in seconds after which a service which received 0 request is put to deep sleep.
light_sleep_value:
type: integer
format: int64
description: Delay in seconds after which a service which received 0 request is put to light sleep.
GetDeploymentScalingReply:
type: object
properties:
replicas:
type: array
items:
$ref: '#/definitions/GetDeploymentScalingReplyItem'
title: The replicas
DeploymentMetadata:
type: object
properties:
trigger:
$ref: '#/definitions/TriggerDeploymentMetadata'
database:
$ref: '#/definitions/DatabaseDeploymentMetadata'
git:
$ref: '#/definitions/GitDeploymentMetadata'
archive:
$ref: '#/definitions/ArchiveDeploymentMetadata'
proxy_ports:
type: array
items:
$ref: '#/definitions/DeploymentProxyPortMetadata'
DeploymentStrategy:
type: object
properties:
type:
$ref: '#/definitions/DeploymentStrategyType'
title: Strategy type
DeploymentDefinition:
type: object
properties:
name:
type: string
type:
$ref: '#/definitions/DeploymentDefinition.Type'
strategy:
$ref: '#/definitions/DeploymentStrategy'
routes:
type: array
items:
$ref: '#/definitions/DeploymentRoute'
ports:
type: array
items:
$ref: '#/definitions/DeploymentPort'
proxy_ports:
type: array
items:
$ref: '#/definitions/DeploymentProxyPort'
env:
type: array
items:
$ref: '#/definitions/DeploymentEnv'
regions:
type: array
items:
type: string
scalings:
type: array
items:
$ref: '#/definitions/DeploymentScaling'
instance_types:
type: array
items:
$ref: '#/definitions/DeploymentInstanceType'
health_checks:
type: array
items:
$ref: '#/definitions/DeploymentHealthCheck'
volumes:
type: array
items:
$ref: '#/definitions/DeploymentVolume'
config_files:
type: array
items:
$ref: '#/definitions/ConfigFile'
skip_cache:
type: boolean
docker:
$ref: '#/definitions/DockerSource'
git:
$ref: '#/definitions/GitSource'
database:
$ref: '#/definitions/DatabaseSource'
archive:
$ref: '#/definitions/ArchiveSource'
ProxyPortProtocol:
type: string
enum:
- tcp
default: tcp
DeploymentProvisioningInfo.Stage.BuildAttempt.BuildStep:
type: object
properties:
name:
type: string
status:
$ref: '#/definitions/DeploymentProvisioningInfo.Stage.Status'
messages:
type: array
items:
type: string
started_at:
type: string
format: date-time
finished_at:
type: string
format: date-time
DockerSource:
type: object
properties:
image:
type: string
command:
type: string
args:
type: array
items:
type: string
image_registry_secret:
type: string
entrypoint:
type: array
items:
type: string
privileged:
type: boolean
title: A flag to run the container in privileged mode
DeploymentProxyPort:
type: object
properties:
port:
type: integer
format: int64
protocol:
$ref: '#/definitions/ProxyPortProtocol'
DeploymentPort:
type: object
properties:
port:
type: integer
format: int64
protocol:
type: string
title: One of http, http2, tcp
DeploymentNeonPostgresDatabaseInfo:
type: object
properties:
active_time_seconds:
type: string
format: int64
compute_time_seconds:
type: string
format: int64
written_data_bytes:
type: string
format: int64
data_transfer_bytes:
type: string
format: int64
data_storage_bytes_hour:
type: string
format: int64
server_host:
type: string
server_port:
type: integer
format: int64
endpoint_state:
type: string
endpoint_last_active:
type: string
format: date-time
default_branch_id:
type: string
default_branch_name:
type: string
default_branch_state:
type: string
default_branch_logical_size:
type: string
format: int64
roles:
type: array
items:
$ref: '#/definitions/DeploymentNeonPostgresDatabaseInfoRole'
GetDeploymentReply:
type: object
properties:
deployment:
$ref: '#/definitions/Deployment'
BuildpackBuilder:
type: object
properties:
build_command:
type: string
title: A command used to override the build command, run after all build steps
run_command:
type: string
title: A command used to override the default run command
privileged:
type: boolean
title: A flag to run the container in privileged mode
DeploymentEvent:
type: object
properties:
id:
type: string
when:
type: string
format: date-time
organization_id:
type: string
deployment_id:
type: string
type:
type: string
message:
type: string
metadata:
type: object
DeploymentScaling:
type: object
properties:
scopes:
type: array
items:
type: string
min:
type: integer
format: int64
max:
type: integer
format: int64
targets:
type: array
items:
$ref: '#/definitions/DeploymentScalingTarget'
DeploymentScalingTarget:
type: object
properties:
average_cpu:
$ref: '#/definitions/DeploymentScalingTargetAverageCPU'
average_mem:
$ref: '#/definitions/DeploymentScalingTargetAverageMem'
requests_per_second:
$ref: '#/definitions/DeploymentScalingTargetRequestsPerSecond'
concurrent_requests:
$ref: '#/definitions/DeploymentScalingTargetConcurrentRequests'
requests_response_time:
$ref: '#/definitions/DeploymentScalingTargetRequestsResponseTime'
sleep_idle_delay:
$ref: '#/definitions/DeploymentScalingTargetSleepIdleDelay'
DeploymentScalingTargetConcurrentRequests:
type: object
properties:
value:
type: integer
format: int64
NeonPostgresDatabase:
type: object
properties:
pg_version:
type: integer
format: int64
region:
type: string
instance_type:
type: string
roles:
type: array
items:
$ref: '#/definitions/NeonPostgresDatabase.NeonRole'
databases:
type: array
items:
$ref: '#/definitions/NeonPostgresDatabase.NeonDatabase'
DeploymentScalingTargetAverageCPU:
type: object
properties:
value:
type: integer
format: int64
ArchiveDeploymentMetadata:
type: object
properties:
last_provisioned_deployment_id:
type: string
DeploymentStrategyType:
type: string
enum:
- DEPLOYMENT_STRATEGY_TYPE_INVALID
- DEPLOYMENT_STRATEGY_TYPE_DEFAULT
- DEPLOYMENT_STRATEGY_TYPE_CANARY
- DEPLOYMENT_STRATEGY_TYPE_ROLLING
- DEPLOYMENT_STRATEGY_TYPE_BLUE_GREEN
- DEPLOYMENT_STRATEGY_TYPE_IMMEDIATE
default: DEPLOYMENT_STRATEGY_TYPE_INVALID
description: " - DEPLOYMENT_STRATEGY_TYPE_INVALID: DEPRECATED: Use DEPLOYMENT_STRATEGY_TYPE_DEFAULT instead.\n - DEPLOYMENT_STRATEGY_TYPE_DEFAULT: Default/unspecified strategy (resolves to platform default, currently ROLLING).\n - DEPLOYMENT_STRATEGY_TYPE_CANARY: Use canary strategy.\n - DEPLOYMENT_STRATEGY_TYPE_ROLLING: Use rolling strategy.\n - DEPLOYMENT_STRATEGY_TYPE_BLUE_GREEN: Use blue green strategy.\n - DEPLOYMENT_STRATEGY_TYPE_IMMEDIATE: Use immediate strategy."
Deployment.Status:
type: string
enum:
- PENDING
- PROVISIONING
- SCHEDULED
- CANCELING
- CANCELED
- ALLOCATING
- STARTING
- HEALTHY
- DEGRADED
- UNHEALTHY
- STOPPING
- STOPPED
- ERRORING
- ERROR
- STASHED
- SLEEPING
default: PENDING
NeonPostgresDatabase.NeonDatabase:
type: object
properties:
name:
type: string
owner:
type: string
ErrorWithFields:
type: object
properties:
status:
type: integer
format: int32
code:
type: string
message:
type: string
fields:
type: array
items:
$ref: '#/definitions/ErrorField'
Deployment:
type: object
properties:
id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
allocated_at:
type: string
format: date-time
started_at:
type: string
format: date-time
succeeded_at:
type: string
format: date-time
terminated_at:
type: string
format: date-time
organization_id:
type: string
app_id:
type: string
service_id:
type: string
parent_id:
type: string
child_id:
type: string
status:
$ref: '#/definitions/Deployment.Status'
metadata:
$ref: '#/definitions/DeploymentMetadata'
definition:
$ref: '#/definitions/DeploymentDefinition'
messages:
type: array
items:
type: string
provisioning_info:
$ref: '#/definitions/DeploymentProvisioningInfo'
database_info:
$ref: '#/definitions/DeploymentDatabaseInfo'
skip_build:
type: boolean
role:
$ref: '#/definitions/Deployment.Role'
version:
type: string
format: uint64
deployment_group:
type: string
GitDeploymentMetadata:
type: object
properties:
last_provisioned_deployment_id:
type: string
git_env:
$ref: '#/definitions/GitEnvDeploymentMetadata'
DeploymentProxyPortMetadata:
type: object
properties:
host:
type: string
public_port:
type: integer
format: int64
port:
type: integer
format: int64
protocol:
$ref: '#/definitions/ProxyPortProtocol'
ErrorField:
type: object
properties:
field:
type: string
description:
type: string
DeploymentInstanceType:
type: object
properties:
scopes:
type: array
items:
type: string
type:
type: string
Error:
type: object
properties:
status:
type: integer
format: int32
code:
type: string
message:
type: string
ArchiveSource:
type: object
properties:
id:
type: string
title: The ID of the archive to deploy
buildpack:
$ref: '#/definitions/BuildpackBuilder'
docker:
$ref: '#/definitions/DockerBuilder'
DeploymentRoute:
type: object
properties:
port:
type: integer
format: int64
path:
type: string
security_policies:
$ref: '#/definitions/SecurityPolicies'
google.rpc.Status:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
details:
type: array
items:
$ref: '#/definitions/google.protobuf.Any'
DeploymentProvisioningInfo.Stage.Status:
type: string
enum:
- UNKNOWN
- PENDING
- RUNNING
- FAILED
- COMPLETED
- ABORTED
default: UNKNOWN
ListDeploymentsReply:
type: object
properties:
deployments:
type: array
items:
$ref: '#/definitions/DeploymentListItem'
title: The collection of deployments
limit:
type: integer
format: int64
title: The limit in the request
offset:
type: integer
format: int64
title: The offset in the request
count:
type: integer
format: int64
title: The total number of items
has_next:
type: boolean
title: If there is more items after in the collection
DeploymentEnv:
type: object
properties:
scopes:
type: array
items:
type: string
key:
type: string
value:
type: string
secret:
type: string
ListDeploymentEventsReply:
type: object
properties:
events:
type: array
items:
$ref: '#/definitions/DeploymentEvent'
title: The collection of events
limit:
type: integer
format: int64
title: The limit in the request
offset:
type: integer
format: int64
title: The offset in the request
order:
type: string
title: The order in the request
has_next:
type: boolean
title: If there is more items after in the collection
DatabaseSource:
type: object
properties:
neon_postgres:
$ref: '#/definitions/NeonPostgresDatabase'
DeploymentDefinition.Type:
type: string
enum:
- INVALID
- WEB
- WORKER
- DATABASE
- SANDBOX
default: INVALID
TriggerDeploymentMetadata.TriggerType:
type: string
enum:
- UNKNOWN_TYPE
- GIT
- RESUME
- DATABASE_SYNC
default: UNKNOWN_TYPE
Instance:
type: object
properties:
id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
organization_id:
type: string
app_id:
type: string
service_id:
type: string
regional_deployment_id:
type: string
allocation_id:
type: string
type:
type: string
replica_index:
type: integer
format: int64
region:
type: string
datacenter:
type: string
hypervisor:
type: string
status:
$ref: '#/definitions/Instance.Status'
messages:
type: array
items:
type: string
started_at:
type: string
format: date-time
succeeded_at:
type: string
format: date-time
terminated_at:
type: string
format: date-time
xyz_deployment_id:
type: string
description: 'WARNING: Please don''t use the following attribute.
Koyeb doesn''t guarantee backwards compatible breaking change and reserve the right to completely drop it without notice.
USE AT YOUR OWN RISK.'
NeonPostgresDatabaseDeploymentMetadata:
type: object
properties:
reset_role_passwords:
type: array
items:
type: string
DockerBuilder:
type: object
properties:
dockerfile:
type: string
title: A path to the Dockerfile
entrypoint:
type: array
items:
type: string
title: The docker ENTRYPOINT
command:
type: string
title: The docker CMD
args:
type: array
items:
type: string
title: The docker CMD args
target:
type: string
title: The target for multi-stage builds
privileged:
type: boolean
title: A flag to run the container in privileged mode
DeploymentScalingTargetRequestsPerSecond:
type: object
properties:
value:
type: integer
format: int64
GitEnvDeploymentMetadata:
type: object
properties:
sha:
type: string
commit_author:
type: string
commit_message:
type: string
HTTPHeader:
type: object
properties:
key:
type: string
value:
type: string
DeploymentHealthCheck:
type: object
properties:
grace_period:
type: integer
format: int64
title: An optional initial period in seconds to wait for the instance to become healthy, default is 5s
interval:
type: integer
format: int64
title: An optional period in seconds between two health checks, default is 60s
restart_limit:
type: integer
format: int64
title: An optional number of consecutive failures before attempting to restart the service, default is 3
timeout:
type: integer
format: int64
title: An optional maximum time to wait in seconds before considering the check as a failure, default is 5s
tcp:
$ref: '#/definitions/TCPHealthCheck'
http:
$ref: '#/definitions/HTTPHealthCheck'
DeploymentNeonPostgresDatabaseInfoRole:
type: object
properties:
name:
type: string
secret_id:
type: string
DeploymentDatabaseInfo:
type: object
properties:
neon_postgres:
$ref: '#/definitions/DeploymentNeonPostgresDatabaseInfo'
DeploymentProvisioningInfo:
type: object
properties:
sha:
type: string
description: The git sha for this build (we resolve the reference at the start of the build).
image:
type: string
description: The docker image built as a result of this build.
stages:
type: array
items:
$ref: '#/definitions/DeploymentProvisioningInfo.Stage'
description: Some info about the build.
TCPHealthCheck:
type: object
properties:
port:
type: integer
format: int64
title: The port to use to perform the health check, must be declared in the ports section
TriggerGitDeploymentMetadata.Provider:
type: string
enum:
- UNKNOWN
- GITHUB
default: UNKNOWN
DeploymentScalingTargetAverageMem:
type: object
properties:
value:
type: integer
format: int64
ConfigFile:
type: object
properties:
path:
type: string
title: the path where the file is copied
permissions:
type: string
title: the permissions of the file in format 0644
content:
type: string
title: the content of the file
HTTPHealthCheck:
type: object
properties:
port:
type: integer
format: int64
title: The port to use to perform the health check, must be declared in the ports section
path:
type: string
title
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/koyeb/refs/heads/main/openapi/koyeb-deployments-api-openapi.yml