Cockroach Labs BackupRestore API

Manage cluster backups, backup configurations, and restore operations for CockroachDB clusters.

OpenAPI Specification

cockroach-labs-backuprestore-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: CockroachDB Cloud APIKeys BackupRestore API
  description: The CockroachDB Cloud API is a REST interface that provides programmatic access to manage the lifecycle of clusters within a CockroachDB Cloud organization. It enables developers and operators to create, configure, scale, and delete CockroachDB Serverless and Dedicated clusters without using the web console. The API supports cluster provisioning, node management, network authorization, customer-managed encryption keys, backup and restore, log and metric export, role management, and folder organization. Authentication is handled via bearer tokens, and the API is rate-limited to 10 requests per second per user.
  version: '2024-09-16'
  contact:
    name: Cockroach Labs Support
    url: https://support.cockroachlabs.com
  termsOfService: https://www.cockroachlabs.com/cloud-terms-and-conditions/
servers:
- url: https://cockroachlabs.cloud
  description: CockroachDB Cloud Production Server
security:
- bearerAuth: []
tags:
- name: BackupRestore
  description: Manage cluster backups, backup configurations, and restore operations for CockroachDB clusters.
paths:
  /api/v1/clusters/{cluster_id}/backups:
    get:
      operationId: ListBackups
      summary: List backups
      description: Returns a list of backups for the specified cluster, optionally filtered by start and end time. Supports pagination.
      tags:
      - BackupRestore
      parameters:
      - $ref: '#/components/parameters/clusterId'
      - name: start_time
        in: query
        description: Filter backups created at or after this RFC3339 timestamp.
        schema:
          type: string
          format: date-time
      - name: end_time
        in: query
        description: Filter backups created before this RFC3339 timestamp.
        schema:
          type: string
          format: date-time
      - $ref: '#/components/parameters/paginationPage'
      - $ref: '#/components/parameters/paginationLimit'
      - $ref: '#/components/parameters/paginationAsOfTime'
      - $ref: '#/components/parameters/paginationSortOrder'
      responses:
        '200':
          description: List of backups returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBackupsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /api/v1/clusters/{cluster_id}/backups-config:
    get:
      operationId: GetBackupConfiguration
      summary: Get backup configuration
      description: Retrieves the backup configuration for the specified cluster, including retention period and backup frequency.
      tags:
      - BackupRestore
      parameters:
      - $ref: '#/components/parameters/clusterId'
      responses:
        '200':
          description: Backup configuration retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackupConfiguration'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: UpdateBackupConfiguration
      summary: Update backup configuration
      description: Updates the backup configuration for the specified cluster, including retention period and backup frequency settings.
      tags:
      - BackupRestore
      parameters:
      - $ref: '#/components/parameters/clusterId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBackupConfigurationSpec'
      responses:
        '200':
          description: Backup configuration updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackupConfiguration'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /api/v1/clusters/{cluster_id}/restores:
    get:
      operationId: ListRestores
      summary: List restores
      description: Returns a list of restore operations for the specified cluster. Supports pagination and time-based filtering.
      tags:
      - BackupRestore
      parameters:
      - $ref: '#/components/parameters/clusterId'
      - name: start_time
        in: query
        description: Filter restores initiated at or after this RFC3339 timestamp.
        schema:
          type: string
          format: date-time
      - name: end_time
        in: query
        description: Filter restores initiated before this RFC3339 timestamp.
        schema:
          type: string
          format: date-time
      - $ref: '#/components/parameters/paginationPage'
      - $ref: '#/components/parameters/paginationLimit'
      - $ref: '#/components/parameters/paginationAsOfTime'
      - $ref: '#/components/parameters/paginationSortOrder'
      responses:
        '200':
          description: List of restore operations returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListRestoresResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: CreateRestore
      summary: Create a restore
      description: Initiates a restore operation to restore a cluster from a backup. The destination_cluster_id identifies the target cluster to restore into.
      tags:
      - BackupRestore
      parameters:
      - $ref: '#/components/parameters/clusterId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRestoreRequest'
      responses:
        '200':
          description: Restore operation initiated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Restore'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /api/v1/clusters/{cluster_id}/restores/{restore_id}:
    get:
      operationId: GetRestore
      summary: Get a restore
      description: Retrieves the status and details of a specific restore operation by ID.
      tags:
      - BackupRestore
      parameters:
      - $ref: '#/components/parameters/clusterId'
      - name: restore_id
        in: path
        required: true
        description: Unique identifier of the restore operation.
        schema:
          type: string
      responses:
        '200':
          description: Restore operation details retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Restore'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Unauthorized:
      description: Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request body or parameters are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    UpdateBackupConfigurationSpec:
      type: object
      description: Specification for updating backup configuration.
      properties:
        frequency_minutes:
          type: integer
          description: New backup frequency in minutes.
        retention_days:
          type: integer
          description: New retention period in days.
    ListRestoresResponse:
      type: object
      description: Paginated list of restore operations.
      properties:
        restores:
          type: array
          description: Array of restore operation objects.
          items:
            $ref: '#/components/schemas/Restore'
        pagination:
          $ref: '#/components/schemas/PaginationResponse'
    ListBackupsResponse:
      type: object
      description: Paginated list of cluster backups.
      properties:
        backups:
          type: array
          description: Array of backup objects.
          items:
            type: object
        pagination:
          $ref: '#/components/schemas/PaginationResponse'
    PaginationResponse:
      type: object
      description: Pagination metadata included in list responses.
      properties:
        next:
          type: string
          description: Token or cursor for retrieving the next page of results.
        last:
          type: string
          description: Token or cursor for the last page of results.
        time:
          type: string
          format: date-time
          description: Server time at which the paginated query was executed.
    BackupConfiguration:
      type: object
      description: Backup configuration settings for a CockroachDB cluster.
      properties:
        cluster_id:
          type: string
          description: Cluster ID the configuration applies to.
        frequency_minutes:
          type: integer
          description: How often backups are taken, in minutes.
        retention_days:
          type: integer
          description: Number of days backups are retained.
    Error:
      type: object
      description: Standard error response returned by the API.
      properties:
        code:
          type: integer
          description: HTTP status code of the error.
        message:
          type: string
          description: Human-readable description of the error.
        details:
          type: array
          description: Additional detail objects providing error context.
          items:
            type: object
    CreateRestoreRequest:
      type: object
      description: Request body for initiating a cluster restore.
      required:
      - backup_id
      properties:
        backup_id:
          type: string
          description: ID of the backup to restore from.
        target:
          type: object
          description: Optional target specification for the restore.
    Restore:
      type: object
      description: Represents a restore operation on a CockroachDB cluster.
      properties:
        id:
          type: string
          description: Unique identifier of the restore operation.
        cluster_id:
          type: string
          description: ID of the destination cluster being restored into.
        status:
          type: string
          description: Current status of the restore operation.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the restore was initiated.
  parameters:
    paginationSortOrder:
      name: pagination.sort_order
      in: query
      description: Sort direction for paginated results. Accepted values are ASC and DESC.
      schema:
        type: string
        enum:
        - ASC
        - DESC
    paginationAsOfTime:
      name: pagination.as_of_time
      in: query
      description: RFC3339 timestamp to return results as they were at a specific point in time (time-travel query).
      schema:
        type: string
        format: date-time
    paginationLimit:
      name: pagination.limit
      in: query
      description: Maximum number of results to return per page.
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 500
    clusterId:
      name: cluster_id
      in: path
      required: true
      description: Unique identifier of the CockroachDB Cloud cluster.
      schema:
        type: string
    paginationPage:
      name: pagination.page
      in: query
      description: Page number for paginated results, starting from 1.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Generate a token in the CockroachDB Cloud Console under Organization Settings > API Access.
externalDocs:
  description: CockroachDB Cloud API Documentation
  url: https://www.cockroachlabs.com/docs/cockroachcloud/cloud-api