planetscale Databases API

Manage PlanetScale databases, including creating, listing, updating settings, and deleting databases.

OpenAPI Specification

planetscale-databases-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: PlanetScale Platform Backups Databases API
  description: The PlanetScale Platform API provides programmatic access to manage PlanetScale serverless MySQL-compatible databases. It allows developers to create and manage databases, branches, deploy requests, passwords, backups, service tokens, organization members, teams, bouncers, and billing data. The API supports authentication via service tokens and OAuth, enabling integration into CI/CD pipelines and infrastructure-as-code workflows.
  version: 1.0.0
  contact:
    name: PlanetScale Support
    url: https://support.planetscale.com
  termsOfService: https://planetscale.com/legal/tos
  license:
    name: Proprietary
    url: https://planetscale.com/legal/tos
servers:
- url: https://api.planetscale.com/v1
  description: PlanetScale Production API
security:
- serviceToken: []
tags:
- name: Databases
  description: Manage PlanetScale databases, including creating, listing, updating settings, and deleting databases.
paths:
  /organizations/{organization}/databases:
    get:
      operationId: listDatabases
      summary: List databases
      description: Returns a list of all databases in the specified organization.
      tags:
      - Databases
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/PageParam'
      - $ref: '#/components/parameters/PerPageParam'
      responses:
        '200':
          description: Successful response with list of databases
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Database'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createDatabase
      summary: Create a database
      description: Creates a new database in the specified organization.
      tags:
      - Databases
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: The name of the database.
                plan:
                  type: string
                  description: The billing plan for the database.
                  enum:
                  - hobby
                  - scaler
                  - scaler_pro
                cluster_size:
                  type: string
                  description: The cluster size for the production branch.
                region:
                  type: string
                  description: The region slug where the database will be created.
      responses:
        '201':
          description: Database created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /organizations/{organization}/databases/{database}:
    get:
      operationId: getDatabase
      summary: Get a database
      description: Returns details about a specific database, including its configuration, state, and production branch information.
      tags:
      - Databases
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/DatabaseParam'
      responses:
        '200':
          description: Successful response with database details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateDatabaseSettings
      summary: Update database settings
      description: Updates settings for a specific database, such as production branch protection, insights, and default branch.
      tags:
      - Databases
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/DatabaseParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                default_branch:
                  type: string
                  description: The name of the default branch.
                production_branch_web_console:
                  type: boolean
                  description: Whether the web console is enabled for production branches.
                insights_enabled:
                  type: boolean
                  description: Whether PlanetScale Insights is enabled.
                migration_framework:
                  type: string
                  description: The migration framework used for schema changes.
                migration_table_name:
                  type: string
                  description: The name of the migration tracking table.
                require_approval_for_deploy:
                  type: boolean
                  description: Whether deploy requests require approval before deployment.
                allow_data_branching:
                  type: boolean
                  description: Whether data branching is enabled.
      responses:
        '200':
          description: Database settings updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteDatabase
      summary: Delete a database
      description: Deletes a database and all of its branches. This action is irreversible.
      tags:
      - Databases
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/DatabaseParam'
      responses:
        '204':
          description: Database deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Unauthorized:
      description: Authentication failed. The service token or OAuth token is missing, invalid, or lacks the required permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnprocessableEntity:
      description: The request was well-formed but contains invalid parameters or violates business rules.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    PageParam:
      name: page
      in: query
      required: false
      description: The page number for pagination.
      schema:
        type: integer
        minimum: 1
        default: 1
    DatabaseParam:
      name: database
      in: path
      required: true
      description: The name of the database.
      schema:
        type: string
    OrganizationParam:
      name: organization
      in: path
      required: true
      description: The name of the organization.
      schema:
        type: string
    PerPageParam:
      name: per_page
      in: query
      required: false
      description: The number of results per page.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
  schemas:
    Database:
      type: object
      description: A PlanetScale serverless MySQL-compatible database with branching and deploy request support.
      properties:
        id:
          type: string
          description: The unique identifier of the database.
        name:
          type: string
          description: The name of the database.
        state:
          type: string
          description: The current state of the database.
          enum:
          - pending
          - ready
          - sleeping
          - awaking
        plan:
          type: string
          description: The billing plan for the database.
        cluster_size:
          type: string
          description: The cluster size of the production branch.
        region:
          type: object
          description: The region where the database is hosted.
          properties:
            slug:
              type: string
              description: The region slug identifier.
            display_name:
              type: string
              description: The human-readable region name.
        default_branch:
          type: string
          description: The name of the default production branch.
        production_branch_web_console:
          type: boolean
          description: Whether the web console is enabled on production branches.
        insights_enabled:
          type: boolean
          description: Whether PlanetScale Insights analytics is enabled.
        migration_framework:
          type: string
          description: The migration framework configured for schema changes.
        require_approval_for_deploy:
          type: boolean
          description: Whether deploy requests require approval before deployment.
        allow_data_branching:
          type: boolean
          description: Whether data branching is enabled.
        created_at:
          type: string
          format: date-time
          description: The timestamp when the database was created.
        updated_at:
          type: string
          format: date-time
          description: The timestamp when the database was last updated.
        html_url:
          type: string
          format: uri
          description: The URL to the database in the PlanetScale dashboard.
    Error:
      type: object
      description: An error response from the PlanetScale API.
      properties:
        code:
          type: string
          description: A machine-readable error code.
        message:
          type: string
          description: A human-readable error message.
  securitySchemes:
    serviceToken:
      type: apiKey
      in: header
      name: Authorization
      description: Service token authentication. Use the format 'ServiceToken {token_id}:{token_value}' in the Authorization header.
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 bearer token authentication. Obtain tokens via the PlanetScale OAuth authorization code flow.
externalDocs:
  description: PlanetScale API Documentation
  url: https://planetscale.com/docs/api/reference/getting-started-with-planetscale-api