Exoscale dbaas API
Databases as a Service (DBaaS) provides scalable and fully-managed database solutions with high availability and performance backed by Exoscale's Compute and Storage services.
Databases as a Service (DBaaS) provides scalable and fully-managed database solutions with high availability and performance backed by Exoscale's Compute and Storage services.
openapi: 3.0.0
info:
version: 2.0.0
termsOfService: https://exoscale.com/terms
contact:
email: support@exoscale.com
name: Exoscale Support
url: https://portal.exoscale.com/tickets
title: Exoscale ai-api-key dbaas API
description: Infrastructure automation API, allowing programmatic access to all Exoscale products and services.
servers:
- url: https://api-{zone}.exoscale.com/v2
variables:
zone:
default: ch-gva-2
enum:
- ch-gva-2
- ch-dk-2
- de-fra-1
- de-muc-1
- at-vie-1
- at-vie-2
- bg-sof-1
- hr-zag-1
tags:
- description: Databases as a Service (DBaaS) provides scalable and fully-managed database solutions with high availability and performance backed by Exoscale's Compute and Storage services.
externalDocs:
description: Read more
url: https://community.exoscale.com/product/dbaas/
name: dbaas
x-display-name: DBaaS
x-weight: 400
x-icon: exo-dbaas
paths:
/dbaas-external-endpoint-opensearch/{endpoint-id}:
delete:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: '[BETA] Delete OpenSearch logs external integration endpoint'
parameters:
- in: path
required: true
name: endpoint-id
schema:
type: string
format: uuid
summary: ''
operationId: delete-dbaas-external-endpoint-opensearch
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-endpoint-opensearch-output'
description: '[BETA] Get OpenSearch Logs external integration endpoint settings'
parameters:
- in: path
required: true
name: endpoint-id
schema:
type: string
format: uuid
summary: ''
operationId: get-dbaas-external-endpoint-opensearch
put:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: '[BETA] Update OpenSearch Logs external integration endpoint'
parameters:
- in: path
required: true
name: endpoint-id
schema:
type: string
format: uuid
summary: ''
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-endpoint-opensearch-input-update'
operationId: update-dbaas-external-endpoint-opensearch
/dbaas-opensearch/{name}/acl-config:
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-opensearch-acl-config'
description: null
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Get DBaaS OpenSearch ACL configuration
operationId: get-dbaas-opensearch-acl-config
put:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Create a DBaaS OpenSearch ACL configuration
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-opensearch-acl-config'
operationId: update-dbaas-opensearch-acl-config
/dbaas-valkey/{name}/migration/stop:
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Stop a DBaaS Valkey migration
operationId: stop-dbaas-valkey-migration
/dbaas-grafana/{name}/maintenance/start:
put:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Initiate Grafana maintenance update
operationId: start-dbaas-grafana-maintenance
/dbaas-postgres/{service}/upgrade-check:
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-task'
description: Check whether you can upgrade Postgres service to a newer version
parameters:
- in: path
required: true
name: service
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: ''
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
target-version:
$ref: '#/components/schemas/dbaas-pg-target-versions'
description: Target version for upgrade
required:
- target-version
operationId: create-dbaas-pg-upgrade-check
/dbaas-mysql/{service-name}/user/{username}/password/reset:
put:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: If no password is provided one will be generated automatically.
parameters:
- in: path
required: true
name: service-name
schema:
$ref: '#/components/schemas/dbaas-service-name'
- in: path
required: true
name: username
schema:
$ref: '#/components/schemas/dbaas-user-username'
summary: Reset the credentials of a DBaaS mysql user
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
password:
$ref: '#/components/schemas/dbaas-mysql-user-password'
description: New password
authentication:
$ref: '#/components/schemas/enum-mysql-authentication-plugin'
description: Authentication method
operationId: reset-dbaas-mysql-user-password
/dbaas-postgres/{service-name}/connection-pool:
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: ''
parameters:
- in: path
required: true
name: service-name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Create a DBaaS PostgreSQL connection pool
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
$ref: '#/components/schemas/dbaas-pg-pool-name'
description: Connection pool name
database-name:
$ref: '#/components/schemas/dbaas-database-name'
description: Service database name
mode:
$ref: '#/components/schemas/enum-pg-pool-mode'
description: PGBouncer pool mode
size:
$ref: '#/components/schemas/dbaas-pg-pool-size'
description: Size of PGBouncer's PostgreSQL side connection pool
username:
$ref: '#/components/schemas/dbaas-pg-pool-username'
description: Pool username
required:
- name
- database-name
operationId: create-dbaas-pg-connection-pool
/dbaas-mysql/{name}:
put:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: Update a DBaaS MySQL service
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Update a DBaaS MySQL service
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
maintenance:
type: object
properties:
dow:
type: string
enum:
- saturday
- tuesday
- never
- wednesday
- sunday
- friday
- monday
- thursday
description: Day of week for installing updates
time:
type: string
maxLength: 8
minLength: 8
description: Time for installing updates, UTC
required:
- dow
- time
description: Automatic maintenance settings
plan:
type: string
maxLength: 128
minLength: 1
description: Subscription plan
termination-protection:
type: boolean
description: Service is protected against termination and powering off
ip-filter:
type: array
items:
type: string
description: Allow incoming connections from CIDR address block, e.g. '10.20.0.0/16'
mysql-settings:
$ref: '#/components/schemas/json-schema-mysql'
description: MySQL-specific settings
migration:
type: object
properties:
host:
type: string
maxLength: 255
minLength: 1
description: Hostname or IP address of the server where to migrate data from
port:
type: integer
format: int64
minimum: 1
maximum: 65535
exclusiveMinimum: false
exclusiveMaximum: false
description: Port number of the server where to migrate data from
password:
type: string
maxLength: 255
minLength: 1
description: Password for authentication with the server where to migrate data from
ssl:
type: boolean
description: The server where to migrate data from is secured with SSL
username:
type: string
maxLength: 255
minLength: 1
description: User name for authentication with the server where to migrate data from
dbname:
type: string
maxLength: 63
minLength: 1
description: Database name for bootstrapping the initial connection
ignore-dbs:
type: string
maxLength: 2048
minLength: 1
description: Comma-separated list of databases, which should be ignored during migration (supported by MySQL only at the moment)
method:
$ref: '#/components/schemas/enum-migration-method'
description: The migration method to be used
required:
- host
- port
description: Migrate data from existing server
binlog-retention-period:
type: integer
format: int64
minimum: 600
maximum: 86400
exclusiveMinimum: false
exclusiveMaximum: false
description: The minimum amount of time in seconds to keep binlog entries before deletion. This may be extended for services that require binlog entries for longer than the default for example if using the MySQL Debezium Kafka connector.
backup-schedule:
type: object
properties:
backup-hour:
type: integer
format: int64
minimum: 0
maximum: 23
exclusiveMinimum: false
exclusiveMaximum: false
nullable: true
description: The hour of day (in UTC) when backup for the service is started. New backup is only started if previous backup has already completed.
backup-minute:
type: integer
format: int64
minimum: 0
maximum: 59
exclusiveMinimum: false
exclusiveMaximum: false
nullable: true
description: The minute of an hour when backup for the service is started. New backup is only started if previous backup has already completed.
operationId: update-dbaas-service-mysql
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-service-mysql'
description: Get a DBaaS MySQL service
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Get a DBaaS MySQL service
operationId: get-dbaas-service-mysql
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: Create a DBaaS MySQL service
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Create a DBaaS MySQL service
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
backup-schedule:
type: object
properties:
backup-hour:
type: integer
format: int64
minimum: 0
maximum: 23
exclusiveMinimum: false
exclusiveMaximum: false
nullable: true
description: The hour of day (in UTC) when backup for the service is started. New backup is only started if previous backup has already completed.
backup-minute:
type: integer
format: int64
minimum: 0
maximum: 59
exclusiveMinimum: false
exclusiveMaximum: false
nullable: true
description: The minute of an hour when backup for the service is started. New backup is only started if previous backup has already completed.
integrations:
type: array
items:
type: object
properties:
type:
type: string
enum:
- read_replica
description: Integration type
source-service:
$ref: '#/components/schemas/dbaas-service-name'
description: A source service
dest-service:
$ref: '#/components/schemas/dbaas-service-name'
description: A destination service
settings:
type: object
description: Integration settings
required:
- type
description: Service integrations to be enabled when creating the service.
ip-filter:
type: array
items:
type: string
description: Allow incoming connections from CIDR address block, e.g. '10.20.0.0/16'
termination-protection:
type: boolean
description: Service is protected against termination and powering off
fork-from-service:
$ref: '#/components/schemas/dbaas-service-name'
description: Service to fork from
recovery-backup-time:
type: string
minLength: 1
description: ISO time of a backup to recover from for services that support arbitrary times
mysql-settings:
$ref: '#/components/schemas/json-schema-mysql'
description: MySQL-specific settings
maintenance:
type: object
properties:
dow:
type: string
enum:
- saturday
- tuesday
- never
- wednesday
- sunday
- friday
- monday
- thursday
description: Day of week for installing updates
time:
type: string
maxLength: 8
minLength: 8
description: Time for installing updates, UTC
required:
- dow
- time
description: Automatic maintenance settings
admin-username:
type: string
maxLength: 64
minLength: 1
pattern: ^[_A-Za-z0-9][-._A-Za-z0-9]{0,63}$
description: Custom username for admin user. This must be set only when a new service is being created.
version:
type: string
minLength: 1
description: MySQL major version
plan:
type: string
maxLength: 128
minLength: 1
description: Subscription plan
admin-password:
$ref: '#/components/schemas/dbaas-mysql-user-password'
description: Custom password for admin user. Defaults to random string. This must be set only when a new service is being created.
migration:
type: object
properties:
host:
type: string
maxLength: 255
minLength: 1
description: Hostname or IP address of the server where to migrate data from
port:
type: integer
format: int64
minimum: 1
maximum: 65535
exclusiveMinimum: false
exclusiveMaximum: false
description: Port number of the server where to migrate data from
password:
type: string
maxLength: 255
minLength: 1
description: Password for authentication with the server where to migrate data from
ssl:
type: boolean
description: The server where to migrate data from is secured with SSL
username:
type: string
maxLength: 255
minLength: 1
description: User name for authentication with the server where to migrate data from
dbname:
type: string
maxLength: 63
minLength: 1
description: Database name for bootstrapping the initial connection
ignore-dbs:
type: string
maxLength: 2048
minLength: 1
description: Comma-separated list of databases, which should be ignored during migration (supported by MySQL only at the moment)
method:
$ref: '#/components/schemas/enum-migration-method'
description: The migration method to be used
required:
- host
- port
description: Migrate data from existing server
binlog-retention-period:
type: integer
format: int64
minimum: 600
maximum: 86400
exclusiveMinimum: false
exclusiveMaximum: false
description: The minimum amount of time in seconds to keep binlog entries before deletion. This may be extended for services that require binlog entries for longer than the default for example if using the MySQL Debezium Kafka connector.
required:
- plan
operationId: create-dbaas-service-mysql
delete:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: name
schema:
type: string
summary: Delete a MySQL service
operationId: delete-dbaas-service-mysql
/dbaas-thanos/{name}/maintenance/start:
put:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Initiate Thanos maintenance update
operationId: start-dbaas-thanos-maintenance
/dbaas-external-endpoint-elasticsearch/{endpoint-id}:
delete:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: '[BETA] Delete ElasticSearch logs external integration endpoint'
parameters:
- in: path
required: true
name: endpoint-id
schema:
type: string
format: uuid
summary: ''
operationId: delete-dbaas-external-endpoint-elasticsearch
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-endpoint-elasticsearch-output'
description: '[BETA] Get ElasticSearch Logs external integration endpoint settings'
parameters:
- in: path
required: true
name: endpoint-id
schema:
type: string
format: uuid
summary: ''
operationId: get-dbaas-external-endpoint-elasticsearch
put:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: '[BETA] Update ElasticSearch Logs external integration endpoint'
parameters:
- in: path
required: true
name: endpoint-id
schema:
type: string
format: uuid
summary: ''
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-endpoint-elasticsearch-input-update'
operationId: update-dbaas-external-endpoint-elasticsearch
/dbaas-mysql/{service-name}/user:
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: service-name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Create a DBaaS MySQL user
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
$ref: '#/components/schemas/dbaas-user-username'
description: Username
authentication:
$ref: '#/components/schemas/enum-mysql-authentication-plugin'
description: Authentication option
required:
- username
operationId: create-dbaas-mysql-user
/dbaas-service-type:
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
type: object
properties:
dbaas-service-types:
type: array
items:
$ref: '#/components/schemas/dbaas-service-type'
description: List available service types for DBaaS
parameters: []
summary: DBaaS Service Types
operationId: list-dbaas-service-types
/dbaas-service:
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
type: object
properties:
dbaas-services:
type: array
items:
$ref: '#/components/schemas/dbaas-service-common'
description: List DBaaS services
parameters: []
summary: List DBaaS services
operationId: list-dbaas-services
/dbaas-external-endpoint-rsyslog/{name}:
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: '[BETA] Create RSyslog external integration endpoint'
parameters:
- in: path
required: true
name: name
schema:
type: string
summary: ''
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-endpoint-rsyslog-input-create'
operationId: create-dbaas-external-endpoint-rsyslog
/dbaas-ca-certificate:
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
type: object
properties:
certificate:
type: string
description: Returns a CA Certificate required to reach a DBaaS service through a TLS-protected connection.
parameters: []
summary: Get DBaaS CA Certificate
operationId: get-dbaas-ca-certificate
/dbaas-settings-grafana:
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
type: object
properties:
settings:
type: object
properties:
grafana:
type: object
properties:
properties:
type: object
additionalProperties:
type: boolean
type:
type: string
title:
type: string
description: Grafana configuration values
description: Get DBaaS Grafana settings
parameters: []
summary: Get DBaaS Grafana settings
operationId: get-dbaas-settings-grafana
/dbaas-postgres/{service-name}/database/{database-name}:
delete:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: service-name
schema:
$ref: '#/components/schemas/dbaas-service-name'
- in: path
required: true
name: database-name
schema:
$ref: '#/components/schemas/dbaas-pg-database-name'
summary: Delete a DBaaS Postgres database
operationId: delete-dbaas-pg-database
/dbaas-postgres/{name}/migration/stop:
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: null
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Stop a DBaaS PostgreSQL migration
operationId: stop-dbaas-pg-migration
/dbaas-kafka/{name}:
get:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/dbaas-service-kafka'
description: null
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Get a DBaaS Kafka service
operationId: get-dbaas-service-kafka
post:
tags:
- dbaas
responses:
'200':
description: '200'
content:
application/json:
schema:
$ref: '#/components/schemas/operation'
description: Create a DBaaS Kafka service
parameters:
- in: path
required: true
name: name
schema:
$ref: '#/components/schemas/dbaas-service-name'
summary: Create a DBaaS Kafka service
requestBody:
required: true
content:
# --- truncated at 32 KB (377 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/exoscale/refs/heads/main/openapi/exoscale-dbaas-api-openapi.yml