Cloud Spanner API

The Cloud Spanner API provides programmatic access to manage Cloud Spanner instances, databases, and sessions. It supports creating and configuring globally distributed database infrastructure, executing SQL queries and DML statements, managing transactions with strong consistency guarantees, and handling database backups and restore operations.

OpenAPI Specification

cloud-spanner-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Google Cloud Spanner API
  description: >-
    The Cloud Spanner API provides programmatic access to Google Cloud Spanner,
    a globally distributed, strongly consistent relational database service. It
    enables management of instances, databases, sessions, and execution of SQL
    queries and DML statements with full ACID transaction support.
  version: v1
  contact:
    name: Google Cloud
    url: https://cloud.google.com/spanner/docs/reference/rest
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://spanner.googleapis.com/v1
    description: Cloud Spanner API v1
tags:
  - name: Databases
    description: Operations on Spanner databases
  - name: Instances
    description: Operations on Spanner instances
  - name: Sessions
    description: Operations on database sessions
paths:
  /projects/{project}/instances:
    get:
      tags:
        - Instances
      summary: Google Cloud Spanner List instances
      description: Lists all instances in the given project.
      operationId: listInstances
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: pageSize
          in: query
          schema:
            type: integer
        - name: pageToken
          in: query
          schema:
            type: string
        - name: filter
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListInstancesResponse'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
    post:
      tags:
        - Instances
      summary: Google Cloud Spanner Create an instance
      description: Creates an instance and begins preparing it to be used.
      operationId: createInstance
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInstanceRequest'
      responses:
        '200':
          description: Instance creation initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Operation'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
  /projects/{project}/instances/{instance}:
    get:
      tags:
        - Instances
      summary: Google Cloud Spanner Get an instance
      description: Gets information about a particular instance.
      operationId: getInstance
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Instance'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
    patch:
      tags:
        - Instances
      summary: Google Cloud Spanner Update an instance
      description: Updates an instance, and begins allocating or releasing resources as requested.
      operationId: updateInstance
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInstanceRequest'
      responses:
        '200':
          description: Instance update initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Operation'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
    delete:
      tags:
        - Instances
      summary: Google Cloud Spanner Delete an instance
      description: Deletes an instance. Immediately upon completion of the request, the instance and all its databases are deleted.
      operationId: deleteInstance
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Instance deleted successfully
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
  /projects/{project}/instances/{instance}/databases:
    get:
      tags:
        - Databases
      summary: Google Cloud Spanner List databases
      description: Lists Cloud Spanner databases.
      operationId: listDatabases
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
        - name: pageSize
          in: query
          schema:
            type: integer
        - name: pageToken
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListDatabasesResponse'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
    post:
      tags:
        - Databases
      summary: Google Cloud Spanner Create a database
      description: Creates a new Cloud Spanner database and starts preparing it to begin serving.
      operationId: createDatabase
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDatabaseRequest'
      responses:
        '200':
          description: Database creation initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Operation'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
  /projects/{project}/instances/{instance}/databases/{database}:
    get:
      tags:
        - Databases
      summary: Google Cloud Spanner Get a database
      description: Gets the state of a Cloud Spanner database.
      operationId: getDatabase
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
        - name: database
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
    delete:
      tags:
        - Databases
      summary: Google Cloud Spanner Drop a database
      description: Drops (deletes) a Cloud Spanner database.
      operationId: dropDatabase
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
        - name: database
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Database dropped successfully
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.admin
  /projects/{project}/instances/{instance}/databases/{database}/sessions:
    post:
      tags:
        - Sessions
      summary: Google Cloud Spanner Create a session
      description: Creates a new session to be used for requests made with the Spanner API.
      operationId: createSession
      parameters:
        - name: project
          in: path
          required: true
          schema:
            type: string
        - name: instance
          in: path
          required: true
          schema:
            type: string
        - name: database
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Session created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Session'
      security:
        - oauth2:
            - https://www.googleapis.com/auth/cloud-platform
            - https://www.googleapis.com/auth/spanner.data
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.google.com/o/oauth2/auth
          tokenUrl: https://oauth2.googleapis.com/token
          scopes:
            https://www.googleapis.com/auth/cloud-platform: Full access to Cloud Platform
            https://www.googleapis.com/auth/spanner.admin: Administer Spanner databases
            https://www.googleapis.com/auth/spanner.data: View and manage Spanner data
  schemas:
    Instance:
      type: object
      properties:
        name:
          type: string
          description: The unique name of the instance.
        config:
          type: string
          description: The instance configuration to use.
        displayName:
          type: string
          description: The descriptive name for the instance.
        nodeCount:
          type: integer
          description: The number of nodes allocated to this instance.
        processingUnits:
          type: integer
          description: The number of processing units allocated to this instance.
        state:
          type: string
          enum:
            - STATE_UNSPECIFIED
            - CREATING
            - READY
        labels:
          type: object
          additionalProperties:
            type: string
        createTime:
          type: string
          format: date-time
        updateTime:
          type: string
          format: date-time
    Database:
      type: object
      properties:
        name:
          type: string
        state:
          type: string
          enum:
            - STATE_UNSPECIFIED
            - CREATING
            - READY
            - READY_OPTIMIZING
        createTime:
          type: string
          format: date-time
        versionRetentionPeriod:
          type: string
        earliestVersionTime:
          type: string
          format: date-time
        defaultLeader:
          type: string
        databaseDialect:
          type: string
          enum:
            - DATABASE_DIALECT_UNSPECIFIED
            - GOOGLE_STANDARD_SQL
            - POSTGRESQL
    Session:
      type: object
      properties:
        name:
          type: string
        labels:
          type: object
          additionalProperties:
            type: string
        createTime:
          type: string
          format: date-time
        approximateLastUseTime:
          type: string
          format: date-time
    CreateInstanceRequest:
      type: object
      properties:
        instanceId:
          type: string
        instance:
          $ref: '#/components/schemas/Instance'
      required:
        - instanceId
        - instance
    UpdateInstanceRequest:
      type: object
      properties:
        instance:
          $ref: '#/components/schemas/Instance'
        fieldMask:
          type: string
      required:
        - instance
        - fieldMask
    CreateDatabaseRequest:
      type: object
      properties:
        createStatement:
          type: string
        extraStatements:
          type: array
          items:
            type: string
        databaseDialect:
          type: string
      required:
        - createStatement
    ListInstancesResponse:
      type: object
      properties:
        instances:
          type: array
          items:
            $ref: '#/components/schemas/Instance'
        nextPageToken:
          type: string
    ListDatabasesResponse:
      type: object
      properties:
        databases:
          type: array
          items:
            $ref: '#/components/schemas/Database'
        nextPageToken:
          type: string
    Operation:
      type: object
      properties:
        name:
          type: string
        done:
          type: boolean
        metadata:
          type: object
        error:
          type: object
          properties:
            code:
              type: integer
            message:
              type: string