Tiger Cloud REST API

Public REST API for the Tiger Cloud control plane — manage projects, services (PostgreSQL/TimescaleDB instances), VPCs, peering, read replicas and analytics events. Authenticated with public/private API key pairs.

OpenAPI Specification

timescaledb-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Tiger Cloud API
  description: |
    A RESTful API for Tiger Cloud platform.
  version: 1.0.0
  license:
    name: Proprietary
    url: https://www.tigerdata.com/legal/terms
  contact:
    name: Tiger Data Support
    url: https://www.tigerdata.com/contact
servers:
  - url: https://console.cloud.tigerdata.com/public/api/v1
    description: API server for Tiger Cloud

tags:
  - name: Auth
    description: Authentication and authorization information.
  - name: VPCs
    description: Manage VPCs and their peering connections.
  - name: Services
    description: Manage services, read replicas, and their associated actions.
  - name: Analytics
    description: Track analytics events.

paths:
  /auth/info:
    get:
      operationId: getAuthInfo
      tags:
        - Auth
      summary: Get Authentication Info
      description: Returns information about the authentication credentials being used to access the API
      responses:
        '200':
          description: Authentication information retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthInfo'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /analytics/identify:
    post:
      operationId: identifyUser
      tags:
        - Analytics
      summary: Identify a user
      description: Identifies a user with optional properties for analytics tracking.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                properties:
                  type: object
                  additionalProperties: true
                  description: Optional map of arbitrary properties associated with the user
                  example:
                    email: "[email protected]"
                    name: "John Doe"
      responses:
        '200':
          $ref: '#/components/responses/AnalyticsResponse'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /analytics/track:
    post:
      operationId: trackEvent
      tags:
        - Analytics
      summary: Track an analytics event
      description: Tracks an analytics event with optional properties.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - event
              properties:
                event:
                  type: string
                  description: The name of the event to track
                  example: service_created
                properties:
                  type: object
                  additionalProperties: true
                  description: Optional map of arbitrary properties associated with the event
                  example:
                    region: "us-east-1"
      responses:
        '200':
          $ref: '#/components/responses/AnalyticsResponse'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/vpcs:
    get:
      operationId: getVPCs
      tags:
        - VPCs
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      summary: List All VPCs
      description: Retrieves a list of all Virtual Private Clouds (VPCs).
      responses:
        '200':
          description: A list of VPCs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VPC'
        '4XX':
          $ref: '#/components/responses/ClientError'
    post:
      operationId: createVPC
      tags:
        - VPCs
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      summary: Create a VPC
      description: Creates a new Virtual Private Cloud (VPC).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VPCCreate'
      responses:
        '201':
          description: VPC created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VPC'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/vpcs/{vpc_id}:
    get:
      operationId: getVPC
      tags:
        - VPCs
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/VPCId'
      summary: Get a VPC
      description: Retrieves the details of a specific VPC by its ID.
      responses:
        '200':
          description: VPC details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VPC'
        '4XX':
          $ref: '#/components/responses/ClientError'
    delete:
      operationId: deleteVPC
      tags:
        - VPCs
      summary: Delete a VPC
      description: Deletes a specific VPC.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/VPCId'
      responses:
        '204':
          description: VPC deleted successfully.
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/vpcs/{vpc_id}/rename:
    post:
      operationId: renameVPC
      tags:
        - VPCs
      summary: Rename a VPC
      description: Updates the name of a specific VPC.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/VPCId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VPCRename'
      responses:
        '200':
          description: VPC renamed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VPC'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/vpcs/{vpc_id}/peerings:
    get:
      operationId: getVPCPeerings
      tags:
        - VPCs
      summary: List VPC Peerings
      description: Retrieves a list of all VPC peering connections for a given VPC.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/VPCId'
      responses:
        '200':
          description: A list of VPC peering connections.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Peering'
        '4XX':
          $ref: '#/components/responses/ClientError'
    post:
      operationId: createVPCPeering
      tags:
        - VPCs
      summary: Create a VPC Peering
      description: Creates a new VPC peering connection.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/VPCId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PeeringCreate'
      responses:
        '201':
          description: VPC peering created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Peering'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/vpcs/{vpc_id}/peerings/{peering_id}:
    get:
      operationId: getVPCPeering
      tags:
        - VPCs
      summary: Get a VPC Peering
      description: Retrieves the details of a specific VPC peering connection.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/VPCId'
        - $ref: '#/components/parameters/PeeringId'
      responses:
        '200':
          description: VPC peering details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Peering'
        '4XX':
          $ref: '#/components/responses/ClientError'
    delete:
      operationId: deleteVPCPeering
      tags:
        - VPCs
      summary: Delete a VPC Peering
      description: Deletes a specific VPC peering connection.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/VPCId'
        - $ref: '#/components/parameters/PeeringId'
      responses:
        '204':
          description: VPC peering deleted successfully.
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services:
    get:
      operationId: getServices
      tags:
        - Services
      summary: List All Services
      description: Retrieves a list of all services within a specific project.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of services.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'
    post:
      operationId: createService
      tags:
        - Services
      summary: Create a Service
      description: Creates a new database service within a project. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceCreate'
      responses:
        '202':
          description: Service creation request has been accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}:
    get:
      operationId: getService
      tags:
        - Services
      summary: Get a Service
      description: Retrieves the details of a specific service by its ID.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '200':
          description: Service details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'
    delete:
      operationId: deleteService
      tags:
        - Services
      summary: Delete a Service
      description: Deletes a specific service. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '202':
          description: Deletion request has been accepted.
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/start:
    post:
      operationId: startService
      tags:
        - Services
      summary: Start a Service
      description: Starts a stopped service within a project. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '202':
          description: Service start request has been accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/stop:
    post:
      operationId: stopService
      tags:
        - Services
      summary: Stop a Service
      description: Stops a running service within a project. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '202':
          description: Service stop request has been accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/attachToVPC:
    post:
      operationId: attachServiceToVPC
      tags:
        - Services
      summary: Attach Service to VPC
      description: Associates a service with a VPC.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceVPCInput'
      responses:
        '202':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/detachFromVPC:
    post:
      operationId: detachServiceFromVPC
      tags:
        - Services
      summary: Detach Service from VPC
      description: Disassociates a service from its VPC.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceVPCInput'
      responses:
        '202':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/resize:
    post:
      operationId: resizeService
      tags:
        - Services
      summary: Resize a Service
      description: Changes the CPU and memory allocation for a specific service within a project. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResizeInput'
      responses:
        '202':
          description: Resize request has been accepted and is in progress.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/enablePooler:
    post:
      operationId: enablePooler
      tags:
        - Services
      summary: Enable Connection Pooler for a Service
      description: Activates the connection pooler for a specific service within a project.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '200':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/disablePooler:
    post:
      operationId: disablePooler
      tags:
        - Services
      summary: Disable Connection Pooler for a Service
      description: Deactivates the connection pooler for a specific service within a project.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '200':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/forkService:
    post:
      operationId: forkService
      tags:
        - Services
      summary: Fork a Service
      description: Creates a new, independent service within a project by taking a snapshot of an existing one.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForkServiceCreate'
      responses:
        '202':
          description: Fork request accepted. The response contains the details of the new service being created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/updatePassword:
    post:
      operationId: updatePassword
      tags:
        - Services
      summary: Update Service Password
      description: Sets a new master password for the service within a project.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordInput'
      responses:
        '204':
          description: Password updated successfully. No content returned.
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/setEnvironment:
    post:
      operationId: setEnvironment
      tags:
        - Services
      summary: Set Environment for a Service
      description: Sets the environment type for the service.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetEnvironmentInput'
      responses:
        '200':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/logs:
    get:
      operationId: getServiceLogs
      tags:
        - Services
      summary: Get service logs
      description: |
        Fetch logs for a specific service. Returns up to 500 log entries from
        available logs. Supports pagination.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
        - name: node
          in: query
          required: false
          schema:
            type: integer
          description: Specific service node to fetch logs from (for multi-node services)
        - name: page
          in: query
          required: false
          deprecated: true
          schema:
            type: integer
          description: Page number for pagination (0-based)
        - name: until
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Fetch logs before this timestamp (RFC3339 format, e.g., 2024-01-15T10:00:00Z)
        - name: since
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Fetch logs after this timestamp (RFC3339 format, e.g., 2024-01-15T09:00:00Z).
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: Opaque pagination cursor returned as lastCursor in a previous response. When provided, returns the next page of logs older than the cursor position.
      responses:
        '200':
          description: Service logs retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceLogs'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/setHA:
    post:
      operationId: setHAReplica
      tags:
        - Services
      summary: Change HA configuration for a Service
      description: Changes the HA configuration for a specific service. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetHAReplicaInput'
      responses:
        '202':
          description: HA replica configuration updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/replicaSets:
    get:
      operationId: getReplicaSets
      tags:
        - Read Replica Sets
      summary: Get Read Replica Sets
      description: Retrieves a list of all read replica sets associated with a primary service within a project.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '200':
          description: A list of read replica sets.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReadReplicaSet'
        '4XX':
          $ref: '#/components/responses/ClientError'
    post:
      operationId: createReplicaSet
      tags:
        - Read Replica Sets
      summary: Create a Read Replica Set
      description: Creates a new read replica set for a service. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReadReplicaSetCreate'
      responses:
        '202':
          description: Read replica set creation request has been accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReadReplicaSet'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}:
    delete:
      operationId: deleteReplicaSet
      tags:
        - Read Replica Sets
      summary: Delete a Read Replica Set
      description: Deletes a specific read replica set. This is an asynchronous operation.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
        - $ref: '#/components/parameters/ReplicaSetId'
      responses:
        '202':
          description: Deletion request has been accepted.
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/resize:
    post:
      operationId: resizeReplicaSet
      tags:
        - Read Replica Sets
      summary: Resize a Read Replica Set
      description: Changes the resource allocation for a specific read replica set.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
        - $ref: '#/components/parameters/ReplicaSetId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResizeInput'
      responses:
        '202':
          description: Resize request has been accepted and is in progress.
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/enablePooler:
    post:
      operationId: enableReplicaPooler
      tags:
        - Read Replica Sets
      summary: Enable Connection Pooler for a Read Replica
      description: Activates the connection pooler for a specific read replica set.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
        - $ref: '#/components/parameters/ReplicaSetId'
      responses:
        '200':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/disablePooler:
    post:
      operationId: disableReplicaPooler
      tags:
        - Read Replica Sets
      summary: Disable Connection Pooler for a Read Replica
      description: Deactivates the connection pooler for a specific read replica set.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
        - $ref: '#/components/parameters/ReplicaSetId'
      responses:
        '200':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

  /projects/{project_id}/services/{service_id}/replicaSets/{replica_set_id}/setEnvironment:
    post:
      operationId: setReplicaEnvironment
      tags:
        - Read Replica Sets
      summary: Set Environment for a Read Replica
      description: Sets the environment type for the read replica set.
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
        - $ref: '#/components/parameters/ReplicaSetId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetEnvironmentInput'
      responses:
        '200':
          $ref: '#/components/responses/SuccessMessage'
        '4XX':
          $ref: '#/components/responses/ClientError'

components:
  parameters:
    ProjectId:
      name: project_id
      in: path
      required: true
      description: The unique identifier of the project.
      schema:
        type: string
        example: "rp1pz7uyae"
    ServiceId:
      name: service_id
      in: path
      required: true
      description: The unique identifier of the service.
      schema:
        type: string
        example: "d1k5vk7hf2"
    ReplicaSetId:
      name: replica_set_id
      in: path
      required: true
      description: The unique identifier of the read replica set.
      schema:
        type: string
        example: "alb8jicdpr"
    VPCId:
      name: vpc_id
      in: path
      required: true
      description: The unique identifier of the VPC.
      schema:
        type: string
        example: "1234567890"
    PeeringId:
      name: peering_id
      in: path
      required: true
      description: The unique identifier of the VPC peering connection.
      schema:
        type: string
        example: "1234567890"

  schemas:
    AuthInfo:
      type: object
      required:
        - type
        - apiKey
      properties:
        type:
          type: string
          description: The type of authentication being used
          enum: ["apiKey"]
          example: "apiKey"
        apiKey:
          type: object
          description: Information about the API key credentials
          required:
            - public_key
            - name
            - created
            - project
            - issuing_user
          properties:
            public_key:
              type: string
              description: The public key of the client credentials
              example: "tskey_abc123"
            name:
              type: string
              description: The name of the credential
              example: "my-production-token"
            created:
              type: string
              format: date-time
              description: When the client credentials were created
              example: "2024-01-15T10:30:00Z"
            project:
              type: object
              description: Information about the project
              required:
                - id
                - name
                - plan_type
              properties:
                id:
                  type: string
                  description: The project ID
                  example: "rp1pz7uyae"
                name:
                  type: string
                  description: The name of the project
                  example: "My Production Project"
                plan_type:
                  type: string
                  description: The plan type for the project
                  example: "FREE"
            issuing_user:
              type: object
              description: Information about the user who created the credentials
              required:
                - id
                - name
                - email
              properties:
                id:
                  type: string
                  description: The user ID
                  example: "user123"
                name:
                  type: string
                  description: The user's name
                  example: "John Doe"
                email:
                  type: string
                  format: email
                  description: The user's email
                  example: "[email protected]"
    VPC:
      type: object
      properties:
        id:
          type: string
          readOnly: true
          example: "1234567890"
        name:
          type: string
          example: "my-production-vpc"
        cidr:
          type: string
          example: "10.0.0.0/16"
        region_code:
          type: string
          example: "us-east-1"
    VPCCreate:
      type: object
      required:
        - name
        - cidr
        - region_code
      properties:
        name:
          type: string
          example: "my-production-vpc"
        cidr:
          type: string
          example: "10.0.0.0/16"
        region_code:
          type: string
          example: "us-east-1"
    VPCRename:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The new name for the VPC.
          example: "my-renamed-vpc"
    Peering:
      type: object
      properties:
        id:
          type: string
          readOnly: true
          example: "1234567890"
        peer_account_id:
          type: string
          example: "acc-12345"
        peer_region_code:
          type: string
          example: "aws-us-east-1"
        peer_vpc_id:
          type: string
          example: "1234567890"
        provisioned_id:
          type: string
          example: "1234567890"
        status:
          type: string
          example: "active"
        error_message:
          type: string
          example: "VPC not found"
    PeeringCreate:
      type: object
      required:
        - peer_account_id
        - peer_region_code
        - peer_vpc_id
      properties:
        peer_account_id:
          type: string
          example: "acc-12345"
        peer_region_code:
          type: string
          example: "aws-us-east-1"
        peer_vpc_id:
          type: string
          example: "1234567890"
    Endpoint:
      type: object
      properties:
        host:
          type: string
          example: "my-service.com"
        port:
          type: integer
          example: 8080
    ConnectionPooler:
      type: object
      properties:
        endpoint:
          $ref: '#/components/schemas/Endpoint'
    Service:
      type: object
      properties:
        service_id:
          type: string
          description: The unique identifier for the service.
        project_id:
          type: string
          description: The project this service belongs to.
        name:
          type: string
          description: The name of the service.
        region_code:
          type: string
          description: The cloud region where the service is hosted.
          example: "us-east-1"
        service_type:
          $ref: '#/components/schemas/ServiceType'
          description: The type of the service.
        created:
          type: string
          format: date-time
          description: Creation timestamp
        initial_password:
          type: string
          description: The initial password for the service.
          format: password
          example: "a-very-secure-initial-password"
        status:
          $ref: '#/components/schemas/DeployStatus'
          description: Current status of the service
        resources:
          type: array
          description: List of resources allocated to the service
          items:
            type:

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/timescaledb/refs/heads/main/openapi/timescaledb-openapi.yml