openapi: 3.2.0 info: contact: email: support@cockroachlabs.com name: Cockroach Labs Support url: https://support.cockroachlabs.com description: An API for managing CockroachDB Cloud resources title: CockroachDB Cloud Physical Cluster Replication API version: '2026-09-15' servers: - url: https://cockroachlabs.cloud security: - Bearer: [] tags: - name: Physical Cluster Replication paths: /api/v1/physical-replication-streams: get: operationId: CockroachCloud_ListPhysicalReplicationStreams summary: List physical replication streams description: 'Can be used by the following roles assigned at the organization, folder or cluster scope: - CLUSTER_ADMIN - CLUSTER_OPERATOR_WRITER - CLUSTER_DEVELOPER' parameters: - name: primary_cluster_id in: query description: 'primary_cluster_id, if set, will cause only replication streams with this cluster as the primary to be returned.' schema: type: string - name: standby_cluster_id in: query description: 'standby_cluster_id, if set, will cause only replication streams with this cluster as the standby to be returned.' schema: type: string - name: cluster_id in: query description: 'cluster_id, if set, will cause replication streams with this cluster as the primary or the standby to be returned.' schema: type: string - name: show_completed in: query description: 'show_completed specifies whether or not replication streams in the completed state are shown.' schema: type: boolean - name: pagination.page in: query schema: type: string - name: pagination.limit in: query schema: type: integer format: int32 - name: pagination.as_of_time in: query schema: type: string format: date-time - name: pagination.sort_order in: query description: " - ASC: Sort in ascending order. This is the default unless otherwise specified.\n - DESC: Sort in descending order." schema: type: string enum: - ASC - DESC responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/PhysicalReplicationStreamList' '400': description: Returned when a request field is invalid. content: application/json: schema: {} '401': description: Returned when the token bearer cannot be authenticated. content: application/json: schema: {} '403': description: Returned when the user does not have permission to access the resource. content: application/json: schema: {} '404': description: Returned when the resource does not exist. content: application/json: schema: {} '500': description: Server error content: application/json: schema: {} default: description: An unexpected error response. content: application/json: schema: $ref: '#/components/schemas/Status' tags: - Physical Cluster Replication x-badges: - color: blue label: PREVIEW x-codeSamples: - lang: Shell + Curl source: "curl --request GET \\\n --url 'https://cockroachlabs.cloud/api/v1/physical-replication-streams?primary_cluster_id=SOME_STRING_VALUE&standby_cluster_id=SOME_STRING_VALUE&cluster_id=SOME_STRING_VALUE&show_completed=SOME_BOOLEAN_VALUE&pagination.page=SOME_STRING_VALUE&pagination.limit=SOME_INTEGER_VALUE&pagination.as_of_time=SOME_STRING_VALUE&pagination.sort_order=SOME_STRING_VALUE' \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'" post: operationId: CockroachCloud_CreatePhysicalReplicationStream summary: Create a physical replication stream description: 'Can be used by the following roles assigned at the organization, folder or cluster scope: - CLUSTER_ADMIN' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePhysicalReplicationStreamRequest' responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/PhysicalReplicationStream' '400': description: Returned when a request field is invalid. content: application/json: schema: {} '401': description: Returned when the token bearer cannot be authenticated. content: application/json: schema: {} '403': description: Returned when the user does not have permission to access the resource. content: application/json: schema: {} '404': description: Returned when the resource does not exist. content: application/json: schema: {} '500': description: Server error content: application/json: schema: {} default: description: An unexpected error response. content: application/json: schema: $ref: '#/components/schemas/Status' tags: - Physical Cluster Replication x-badges: - color: blue label: PREVIEW x-codeSamples: - lang: Shell + Curl source: "curl --request POST \\\n --url https://cockroachlabs.cloud/api/v1/physical-replication-streams \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n --json '{\"primary_cluster_id\":\"string\",\"standby_cluster_id\":\"string\"}'" /api/v1/physical-replication-streams/{id}: get: operationId: CockroachCloud_GetPhysicalReplicationStream summary: Get a physical replication stream description: 'Can be used by the following roles assigned at the organization, folder or cluster scope: - CLUSTER_ADMIN - CLUSTER_OPERATOR_WRITER - CLUSTER_DEVELOPER' parameters: - name: id in: path description: id is the ID of the replication stream to get. required: true schema: type: string responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/PhysicalReplicationStream' '400': description: Returned when a request field is invalid. content: application/json: schema: {} '401': description: Returned when the token bearer cannot be authenticated. content: application/json: schema: {} '403': description: Returned when the user does not have permission to access the resource. content: application/json: schema: {} '404': description: Returned when the resource does not exist. content: application/json: schema: {} '500': description: Server error content: application/json: schema: {} default: description: An unexpected error response. content: application/json: schema: $ref: '#/components/schemas/Status' tags: - Physical Cluster Replication x-badges: - color: blue label: PREVIEW x-codeSamples: - lang: Shell + Curl source: "curl --request GET \\\n --url https://cockroachlabs.cloud/api/v1/physical-replication-streams/{id} \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'" patch: operationId: CockroachCloud_UpdatePhysicalReplicationStream summary: Update a physical replication stream description: 'Can be used by the following roles assigned at the organization, folder or cluster scope: - CLUSTER_ADMIN' parameters: - name: id in: path description: id is the ID of the replication stream to update. required: true schema: type: string requestBody: description: 'spec contains the information that is being updated for the given replication stream.' required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePhysicalReplicationStreamSpec' responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/PhysicalReplicationStream' '400': description: Returned when a request field is invalid. content: application/json: schema: {} '401': description: Returned when the token bearer cannot be authenticated. content: application/json: schema: {} '403': description: Returned when the user does not have permission to access the resource. content: application/json: schema: {} '404': description: Returned when the resource does not exist. content: application/json: schema: {} '500': description: Server error content: application/json: schema: {} default: description: An unexpected error response. content: application/json: schema: $ref: '#/components/schemas/Status' tags: - Physical Cluster Replication x-badges: - color: blue label: PREVIEW x-codeSamples: - lang: Shell + Curl source: "curl --request PATCH \\\n --url https://cockroachlabs.cloud/api/v1/physical-replication-streams/{id} \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n --json '{\"failover_at\":\"2006-01-03T15:04:05Z\",\"status\":\"FAILING_OVER\"}'" components: schemas: Any: description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nIn its binary encoding, an `Any` is an ordinary message; but in other wire\nforms like JSON, it has a special encoding. The format of the type URL is\ndescribed on the `type_url` field.\n\nProtobuf APIs provide utilities to interact with `Any` values:\n\n- A 'pack' operation accepts a message and constructs a generic `Any` wrapper\n around it.\n- An 'unpack' operation reads the content of an `Any` message, either into an\n existing message or a new one. Unpack operations must check the type of the\n value they unpack against the declared `type_url`.\n- An 'is' operation decides whether an `Any` contains a message of the given\n type, i.e. whether it can 'unpack' that type.\n\nThe JSON format representation of an `Any` follows one of these cases:\n\n- For types without special-cased JSON encodings, the JSON format\n representation of the `Any` is the same as that of the message, with an\n additional `@type` field which contains the type URL.\n- For types with special-cased JSON encodings (typically called 'well-known'\n types, listed in https://protobuf.dev/programming-guides/json/#any), the\n JSON format representation has a key `@type` which contains the type URL\n and a key `value` which contains the JSON-serialized value.\n\nThe text format representation of an `Any` is like a message with one field\nwhose name is the type URL in brackets. For example, an `Any` containing a\n`foo.Bar` message may be written `[type.googleapis.com/foo.Bar] { a: 2 }`." type: object properties: '@type': description: 'Identifies the type of the serialized Protobuf message with a URI reference consisting of a prefix ending in a slash and the fully-qualified type name. Example: type.googleapis.com/google.protobuf.StringValue This string must contain at least one `/` character, and the content after the last `/` must be the fully-qualified name of the type in canonical form, without a leading dot. Do not write a scheme on these URI references so that clients do not attempt to contact them. The prefix is arbitrary and Protobuf implementations are expected to simply strip off everything up to and including the last `/` to identify the type. `type.googleapis.com/` is a common default prefix that some legacy implementations require. This prefix does not indicate the origin of the type, and URIs containing it are not expected to respond to any requests. All type URL strings must be legal URI references with the additional restriction (for the text format) that the content of the reference must consist only of alphanumeric characters, percent-encoded escapes, and characters in the following set (not including the outer backticks): `/-.~_!$&()*+,;=`. Despite our allowing percent encodings, implementations should not unescape them to prevent confusion with existing parsers. For example, `type.googleapis.com%2FFoo` should be rejected. In the original design of `Any`, the possibility of launching a type resolution service at these type URLs was considered but Protobuf never implemented one and considers contacting these URLs to be problematic and a potential security issue. Do not attempt to contact type URLs.' type: string additionalProperties: {} UpdatePhysicalReplicationStreamSpec: type: object properties: failover_at: description: 'failover_at is the crdb system time at which failover occurs. If the user sets the status to ''FAILING_OVER'' but omits failover_at, the failover time will default to the latest consistent replicated time. Otherwise, the user can pick a time up to one hour in the future to schedule a failover, or a time in the past to restore the cluster to a recent state. If the time is in the past, the API will make a best-effort attempt to validate that the time is not earlier than the retained time. In this case, if the retained time is updated in between validation and failover execution and the failover time becomes invalid, the stream will failover to the retained time. failover_at is not required when updating the status to ''CANCELED''.' type: string format: date-time status: $ref: '#/components/schemas/ReplicationStreamStatus.Type' example: failover_at: '2006-01-03T15:04:05Z' status: FAILING_OVER Status: type: object properties: code: type: integer format: int32 details: type: array items: $ref: '#/components/schemas/Any' message: type: string ReplicationStreamStatus.Type: description: "status describes the desired status of the replication stream.\n\n - STARTING: signifies that a stream is starting\n - REPLICATING: during an update request, status 'REPLICATING' is allowed to transition to 'FAILING_OVER' or 'CANCELED'.\nOther status transitions are not supported.\n - FAILING_OVER: used to trigger a failover, or to signify that a failover is occurring.\n - COMPLETED: signifies that a failover is complete.\n - CANCELED: signifies that a stream is canceled." type: string enum: - STARTING - REPLICATING - FAILING_OVER - COMPLETED - CANCELED PhysicalReplicationStreamList: type: object properties: pagination: $ref: '#/components/schemas/KeysetPaginationResponse' physical_replication_streams: description: physical_replication_streams is a list of PhysicalReplicationStreams. type: array items: $ref: '#/components/schemas/PhysicalReplicationStream' required: - physical_replication_streams CreatePhysicalReplicationStreamRequest: type: object properties: primary_cluster_id: description: 'primary_cluster_id is the ID of the cluster that is being replicated.' type: string standby_cluster_id: description: standby_cluster_id is the ID of the cluster that data is being replicated to. type: string required: - primary_cluster_id - standby_cluster_id PhysicalReplicationStream: type: object properties: activated_at: description: 'activated_at is the crdb system time at which failover is finalized. This may differ from the time for which failover was requested. This field will be present when a replication stream is in the COMPLETED state.' type: string format: date-time canceled_at: description: canceled_at is the timestamp at which the replication stream was canceled. type: string format: date-time created_at: description: 'created_at is the timestamp at which the replication stream was created.' type: string format: date-time failover_at: description: 'failover_at is the time for which failover is requested. If the user sets the status to ''FAILING_OVER'' but omits failover_at, the failover time will default to the latest consistent replicated time. Otherwise, the user can pick a time up to one hour in the future to schedule a failover, or a time in the past to restore the cluster to a recent state. This field will be present if the user has requested failover at a future time.' type: string format: date-time id: description: id is the UUID of the replication stream. type: string primary_cluster_id: description: primary_cluster_id is the ID of the cluster that is being replicated. type: string replicated_time: description: 'replicated_time is the timestamp indicating the point up to which data has been replicated. The window between replicated_time and the actual time is known as replication lag. This field will be present when a replication stream is in the REPLICATING state.' type: string format: date-time replication_lag_seconds: description: 'replication_lag_seconds is the replication lag (current time minus replicated time) in seconds. This field will be present when a replication stream is in the REPLICATING state.' type: integer format: int32 retained_time: description: 'retained_time is the timestamp indicating the lower bound that the replication stream can failover to. This field will be present when a replication stream is in the REPLICATING state.' type: string format: date-time standby_cluster_id: description: 'standby_cluster_id is the ID of the standby cluster that data is being replicated to.' type: string status: $ref: '#/components/schemas/ReplicationStreamStatus.Type' example: activation_at: '2006-01-03T15:04:15Z' created_at: '2006-01-02T15:04:05Z' failover_at: '2006-01-03T15:04:05Z' id: 00000000-0000-0000-0000-000000000001 primary_cluster_id: 00000000-0000-0000-0000-000000000002 replicated_time: '2006-01-03T15:04:04Z' retained_time: '2006-01-02T15:04:06Z' standby_cluster_id: 00000000-0000-0000-0000-000000000003 status: COMPLETED required: - id - status - primary_cluster_id - standby_cluster_id - created_at KeysetPaginationResponse: type: object properties: next_page: type: string previous_page: type: string securitySchemes: Bearer: type: http scheme: bearer externalDocs: description: Use the CockroachDB Cloud API url: https://www.cockroachlabs.com/docs/cockroachcloud/cloud-api.html