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.

OpenAPI Specification

exoscale-dbaas-api-openapi.yml Raw ↑
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