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.
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: 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