planetscale Bouncers API

Manage PgBouncer connection pooling instances for database branches, including creating, listing, resizing, and deleting bouncers.

OpenAPI Specification

planetscale-bouncers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: PlanetScale Platform Backups Bouncers 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: Bouncers
  description: Manage PgBouncer connection pooling instances for database branches, including creating, listing, resizing, and deleting bouncers.
paths:
  /organizations/{organization}/databases/{database}/branches/{branch}/bouncers:
    get:
      operationId: listBouncers
      summary: List bouncers
      description: Returns a list of PgBouncer connection pooling instances for the specified branch.
      tags:
      - Bouncers
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/DatabaseParam'
      - $ref: '#/components/parameters/BranchParam'
      responses:
        '200':
          description: Successful response with list of bouncers
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Bouncer'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createBouncer
      summary: Create a bouncer
      description: Creates a new PgBouncer connection pooling instance for the specified branch.
      tags:
      - Bouncers
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/DatabaseParam'
      - $ref: '#/components/parameters/BranchParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: The name of the bouncer instance.
                pool_size:
                  type: integer
                  description: The connection pool size.
      responses:
        '201':
          description: Bouncer created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bouncer'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /organizations/{organization}/databases/{database}/branches/{branch}/bouncers/{bouncer_name}:
    get:
      operationId: getBouncer
      summary: Get a bouncer
      description: Returns details about a specific PgBouncer instance.
      tags:
      - Bouncers
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/DatabaseParam'
      - $ref: '#/components/parameters/BranchParam'
      - $ref: '#/components/parameters/BouncerNameParam'
      responses:
        '200':
          description: Successful response with bouncer details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bouncer'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteBouncer
      summary: Delete a bouncer
      description: Deletes a PgBouncer connection pooling instance.
      tags:
      - Bouncers
      parameters:
      - $ref: '#/components/parameters/OrganizationParam'
      - $ref: '#/components/parameters/DatabaseParam'
      - $ref: '#/components/parameters/BranchParam'
      - $ref: '#/components/parameters/BouncerNameParam'
      responses:
        '204':
          description: Bouncer 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:
    BranchParam:
      name: branch
      in: path
      required: true
      description: The name of the branch.
      schema:
        type: string
    BouncerNameParam:
      name: bouncer_name
      in: path
      required: true
      description: The name of the PgBouncer instance.
      schema:
        type: string
    OrganizationParam:
      name: organization
      in: path
      required: true
      description: The name of the organization.
      schema:
        type: string
    DatabaseParam:
      name: database
      in: path
      required: true
      description: The name of the database.
      schema:
        type: string
  schemas:
    Bouncer:
      type: object
      description: A PgBouncer connection pooling instance for a database branch.
      properties:
        id:
          type: string
          description: The unique identifier of the bouncer.
        name:
          type: string
          description: The name of the bouncer instance.
        state:
          type: string
          description: The current state of the bouncer.
          enum:
          - pending
          - ready
          - resizing
        pool_size:
          type: integer
          description: The connection pool size.
        created_at:
          type: string
          format: date-time
          description: The timestamp when the bouncer was created.
        updated_at:
          type: string
          format: date-time
          description: The timestamp when the bouncer was last updated.
    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