openapi: 3.1.0
info:
title: PlanetScale Platform Backups Webhooks 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: Webhooks
description: Manage webhook configurations for database event notifications.
paths:
/organizations/{organization}/databases/{database}/webhooks:
get:
operationId: listWebhooks
summary: List webhooks
description: Returns a list of webhook configurations for the specified database. Each database can have up to 5 webhooks.
tags:
- Webhooks
parameters:
- $ref: '#/components/parameters/OrganizationParam'
- $ref: '#/components/parameters/DatabaseParam'
responses:
'200':
description: Successful response with list of webhooks
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Webhook'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createWebhook
summary: Create a webhook
description: Creates a new webhook configuration for the specified database to receive event notifications via HTTP POST callbacks.
tags:
- Webhooks
parameters:
- $ref: '#/components/parameters/OrganizationParam'
- $ref: '#/components/parameters/DatabaseParam'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- url
- events
properties:
url:
type: string
format: uri
description: The HTTPS URL to receive webhook POST callbacks.
events:
type: array
items:
type: string
description: The list of event types to subscribe to.
secret:
type: string
description: The shared secret used to sign webhook payloads for verification.
responses:
'201':
description: Webhook created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
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'
schemas:
Webhook:
type: object
description: A webhook configuration for receiving event notifications from a PlanetScale database.
properties:
id:
type: string
description: The unique identifier of the webhook.
url:
type: string
format: uri
description: The HTTPS URL that receives webhook callbacks.
events:
type: array
items:
type: string
description: The list of event types the webhook subscribes to.
active:
type: boolean
description: Whether the webhook is currently active.
created_at:
type: string
format: date-time
description: The timestamp when the webhook was created.
updated_at:
type: string
format: date-time
description: The timestamp when the webhook 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.
parameters:
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
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