openapi: 3.1.0 info: title: PlanetScale Platform Backups Roles 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: Roles description: Manage role-based credentials for database access. paths: /organizations/{organization}/databases/{database}/branches/{branch}/roles: post: operationId: createRole summary: Create role credentials description: Creates role-based credentials for accessing a database branch with specific permissions. tags: - Roles 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 role. role: type: string description: The access level for the role. enum: - admin - reader - writer - readwriter responses: '201': description: Role credentials created successfully content: application/json: schema: $ref: '#/components/schemas/RoleCredentials' '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: RoleCredentials: type: object description: Role-based credentials for accessing a database branch. properties: id: type: string description: The unique identifier of the role credentials. name: type: string description: The name of the role. role: type: string description: The access level of the role. username: type: string description: The username for connecting. password: type: string description: The password for connecting. Only returned during creation. hostname: type: string description: The hostname for connecting. created_at: type: string format: date-time description: The timestamp when the role was created. 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: BranchParam: name: branch in: path required: true description: The name of the branch. 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 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