openapi: 3.0.0 info: title: Delphix DCT Algorithms PaaSSnapshots API version: 3.28.0 description: Delphix DCT API contact: name: Delphix Support url: https://portal.perforce.com/s/ email: support@delphix.com servers: - url: /dct/v3 security: - ApiKeyAuth: [] tags: - name: PaaSSnapshots paths: /paas-instances/{paaSInstanceId}/snapshots: post: summary: Create a snapshot of a PaaS Instance operationId: create_paas_instance_snapshot tags: - PaaSSnapshots parameters: - $ref: '#/components/parameters/paaSInstanceIdParam' requestBody: content: application/json: schema: x-body-name: paas_snapshot_request $ref: '#/components/schemas/PaaSSnapshotRequest' responses: '202': description: Accepted content: application/json: schema: type: object title: CreatePaaSInstanceSnapshotResponse properties: job: $ref: '#/components/schemas/Job' /paas-snapshots: get: summary: Get all PaaS Snapshots operationId: get_all_paas_snapshots tags: - PaaSSnapshots parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/PaaSSnapshotSortParam' responses: '200': description: OK content: application/json: schema: type: object title: ListPaaSSnapshotResponse properties: items: type: array items: $ref: '#/components/schemas/PaaSSnapshot' response_metadata: $ref: '#/components/schemas/PaginatedResponseMetadata' /paas-snapshots/{paaSSnapshotId}: parameters: - $ref: '#/components/parameters/paaSSnapshotIdParam' get: summary: Get PaaS Snapshot by ID operationId: get_paas_snapshot_by_id tags: - PaaSSnapshots responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaaSSnapshot' /paas-snapshots/{paaSSnapshotId}/tags: parameters: - $ref: '#/components/parameters/paaSSnapshotIdParam' post: tags: - PaaSSnapshots summary: Create tags for a PaaS Snapshot. operationId: create_paas_snapshot_tags requestBody: content: application/json: schema: x-body-name: paas_snapshot_tags $ref: '#/components/schemas/CloudTagsRequest' description: Tags information for PaaS Snapshot. required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/CloudTagsResponse' get: tags: - PaaSSnapshots summary: Get tags for a PaaS Snapshot. operationId: get_paas_snapshot_tags responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CloudTagsResponse' /paas-snapshots/{paaSSnapshotId}/tags/delete: parameters: - $ref: '#/components/parameters/paaSSnapshotIdParam' post: tags: - PaaSSnapshots summary: Delete tags for a PaaS Snapshot. operationId: delete_paas_snapshot_tags requestBody: $ref: '#/components/requestBodies/DeleteCloudTags' responses: '204': description: No Content /paas-snapshots/search: post: summary: Search PaaS Snapshots operationId: search_paas_snapshots tags: - PaaSSnapshots x-filterable: fields: id: type: string name: type: string size: type: integer format: int64 database_id: type: string database_name: type: string instance_id: type: string instance_name: type: string snapshot_location: type: string timestamp: type: string format: date-time end_timestamp: type: string format: date-time is_public: type: boolean cloud_account_id: type: string timeflow_id: type: string masked_by_execution_id: type: string masked_by_collection_id: type: string tags: type: array[object] fields: key: type: string value: type: string parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/PaaSSnapshotSortParam' requestBody: $ref: '#/components/requestBodies/SearchBody' responses: '200': description: OK content: application/json: schema: type: object title: SearchPaaSSnapshotResponse properties: items: type: array items: $ref: '#/components/schemas/PaaSSnapshot' response_metadata: $ref: '#/components/schemas/PaginatedResponseMetadata' /paas-snapshots/{paaSSnapshotId}/delete: parameters: - $ref: '#/components/parameters/paaSSnapshotIdParam' post: summary: Delete PaaS Snapshot by ID operationId: delete_paas_snapshot_by_id tags: - PaaSSnapshots responses: '202': description: Accepted content: application/json: schema: type: object title: DeletePaaSSnapshotResponse properties: job: description: The job object. $ref: '#/components/schemas/Job' /paas-snapshots/{paaSSnapshotId}/share: post: summary: share PaaS Snapshots and make it public operationId: share_paas_snapshot tags: - PaaSSnapshots parameters: - $ref: '#/components/parameters/paaSSnapshotIdParam' responses: '200': description: OK content: application/json: schema: title: SharePaaSSnapshotResponse type: object properties: snapshot: $ref: '#/components/schemas/PaaSSnapshot' /paas-snapshots/{paaSSnapshotId}/unshare: post: summary: un-share PaaS Snapshots and make it public operationId: unshare_paas_snapshot tags: - PaaSSnapshots parameters: - $ref: '#/components/parameters/paaSSnapshotIdParam' responses: '200': description: OK content: application/json: schema: title: UnSharePaaSSnapshotResponse type: object properties: snapshot: $ref: '#/components/schemas/PaaSSnapshot' /paas-databases/{paaSDatabaseId}/snapshots: post: summary: Create a snapshot of a PaaS Database operationId: create_paas_database_snapshot tags: - PaaSSnapshots parameters: - $ref: '#/components/parameters/paaSDatabaseIdParam' requestBody: content: application/json: schema: x-body-name: paas_snapshot_request $ref: '#/components/schemas/PaaSSnapshotRequest' responses: '202': description: Accepted content: application/json: schema: type: object title: CreatePaaSDatabaseSnapshotResponse properties: job: $ref: '#/components/schemas/Job' components: parameters: PaaSSnapshotSortParam: name: sort in: query description: The field to sort snapshot results by. A field prefixed with `-` indicates descending order. required: false schema: type: string enum: - id - -id - name - -name - size - -size - snapshot_location - -snapshot_location - database_id - -database_id - database_name - -database_name - instance_id - -instance_id - instance_name - -instance_name - timestamp - -timestamp - end_timestamp - -end_timestamp - is_public - -is_public - cloud_account_id - -cloud_account_id - timeflow_id - -timeflow_id nullable: true example: -timestamp paaSDatabaseIdParam: in: path name: paaSDatabaseId required: true schema: type: string minLength: 1 description: The ID of the PaaS Database. paaSSnapshotIdParam: in: path name: paaSSnapshotId required: true schema: type: string minLength: 1 description: The ID of the PaaS Snapshot. paaSInstanceIdParam: in: path name: paaSInstanceId required: true schema: type: string minLength: 1 description: The ID of the PaaS Instance. limit: name: limit in: query description: Maximum number of objects to return per query. The value must be between 1 and 1000. Default is 100. example: 50 schema: type: integer minimum: 1 maximum: 1000 default: 100 cursor: name: cursor in: query description: Cursor to fetch the next or previous page of results. The value of this property must be extracted from the 'prev_cursor' or 'next_cursor' property of a PaginatedResponseMetadata which is contained in the response of list and search API endpoints. schema: type: string minLength: 1 maxLength: 4096 schemas: Tag: type: object required: - key - value properties: key: description: Key of the tag type: string minLength: 1 maxLength: 4000 example: key-1 value: description: Value of the tag type: string minLength: 1 maxLength: 4000 example: value-1 VirtualizationTaskEvent: deprecated: true properties: message_details: type: string CloudTagsResponse: type: object properties: tags: description: Array of tags with key value pairs type: array items: $ref: '#/components/schemas/CloudTag' CloudTag: type: object required: - key - value properties: key: description: Key of the tag type: string minLength: 1 maxLength: 4000 example: key-1 value: description: Value of the tag type: string minLength: 1 maxLength: 4000 example: value-1 mirror_on_cloud: description: Whether this tag is mirrored from/to the Cloud Provider account hosting the PaaS Database or Instance. Not applicable to non PaaS objects. type: boolean default: false Engine: properties: engine_id: type: string minLength: 1 maxLength: 4000 engine_name: type: string minLength: 1 maxLength: 4000 PaginatedResponseMetadata: type: object properties: prev_cursor: description: Pointer to the previous page of results. Use this value as a cursor query parameter in a subsequent request, along with limit, to navigate through the collection by virtual page. type: string next_cursor: description: Pointer to the next page of results. Use this value as a cursor query parameter in a subsequent request, along with limit, to navigate through the collection by virtual page. type: string total: description: The total number of results. This value may not be provided. type: integer format: int_64 PaaSSnapshotRequest: type: object properties: is_public: description: Whether to make the new snapshot public. type: boolean example: true name: description: The name of the PaaS Snapshot. type: string minLength: 1 maxLength: 128 example: my-snapshot-123 JobTaskEvent: properties: message_details: type: string JobTask: properties: id: type: string parent_job_id: type: string start_time: type: string format: date-time end_time: type: string format: date-time title: type: string percent_complete: type: integer minimum: 0 maximum: 100 events: type: array items: $ref: '#/components/schemas/JobTaskEvent' status: type: string enum: - PENDING - STARTED - TIMEDOUT - RUNNING - CANCELED - FAILED - SUSPENDED - WAITING - COMPLETED - ABANDONED SearchBody: description: Search body. type: object properties: filter_expression: type: string minLength: 5 maxLength: 50000 example: string_field CONTAINS "over" AND numberic_field GT 9000 OR string_field2 EQ "Goku" CloudTagsRequest: type: object required: - tags properties: tags: description: Array of tags with key value pairs type: array items: $ref: '#/components/schemas/CloudTag' minItems: 1 maxItems: 1000 uniqueItems: true VirtualizationTask: deprecated: true properties: id: type: string parent_job_id: type: string start_time: type: string format: date-time end_time: type: string format: date-time title: type: string percent_complete: type: integer minimum: 0 maximum: 100 events: type: array items: $ref: '#/components/schemas/VirtualizationTaskEvent' status: type: string enum: - PENDING - STARTED - TIMEDOUT - RUNNING - CANCELED - FAILED - SUSPENDED - WAITING - COMPLETED - ABANDONED DeleteCloudTag: type: object properties: key: description: Key of the tag type: string minLength: 1 maxLength: 4000 example: key-1 value: description: Value of the tag type: string minLength: 1 maxLength: 4000 example: value-1 tags: description: List of tags to be deleted type: array minItems: 1 maxItems: 1000 uniqueItems: true items: $ref: '#/components/schemas/CloudTag' PaaSSnapshot: description: A PaaS Snapshot. type: object properties: id: description: The ID of the PaaS Snapshot. type: string example: snapshot-123 name: description: The name of the PaaS Snapshot. type: string example: my-snapshot-123 size: description: The size of the PaaS Snapshot in bytes. type: integer format: int64 example: 123456789 snapshot_location: description: The location of the PaaS Snapshot. This is platform specific and may represent a logical unique identifier, a location on storage, ... type: string database_id: description: The ID of the PaaS Database. type: string example: my-db-123 instance_id: description: The ID of the PaaS Instance. type: string example: my-db-123 database_name: description: The name of the PaaS Database. type: string example: my-db instance_name: description: The name of the PaaS Database instance. type: string example: my-db timestamp: type: string format: date-time description: The timestamp of the PaaS Snapshot. If this snapshot represents a range, this is the start timestamp of the range. example: '2021-05-01T08:51:34.148000+00:00' end_timestamp: description: The last point in time data can be provisioned or refresh to. If the snapshots represents a single point in time, this is equal to timestamp. Otherwise, it must be greater than timestamp, and indicates than any timestamp between timestamp and end_timestamp can be used. If this is null, it indicates the snapshot is valid until the current time. type: string format: date-time example: '2025-05-01T09:51:34.148000+00:00' is_public: description: Whether this snapshot is public or not. type: boolean example: true is_dct_managed: description: Whether this snapshot was created via DCT or not. All snapshots can be used to provision or refresh, but only DCT managed snapshots can be deleted via DCT. type: boolean example: true is_automated_backup: description: Whether this snapshot represents an automated backup. Automated backups are point-in-time backups with a retention period that represent a range of time rather than a single point. type: boolean example: true cloud_account_id: description: The ID of the Cloud Account. type: string example: my-db-123 timeflow_id: description: The ID of the PaaSTimeflow this snapshot belongs to. type: string example: timeflow-123 masked_by_execution_id: description: The ID of the compliance job collection execution that masked this snapshot, if any. type: string readOnly: true masked_by_collection_id: description: The ID of the compliance job collection that masked this snapshot, if any. type: string readOnly: true tags: type: array items: $ref: '#/components/schemas/CloudTag' Job: description: An asynchronous task. type: object properties: id: description: The Job entity ID. type: string example: job-123 status: description: The status of the job. type: string enum: - PENDING - STARTED - TIMEDOUT - RUNNING - CANCELED - FAILED - SUSPENDED - WAITING - COMPLETED - ABANDONED example: RUNNING is_waiting_for_telemetry: description: Indicates that the operations performed by this Job have completed successfully, but the object changes are not yet reflected. This is only set when when the JOB is in STARTED status, with the guarantee that the job will not transition to the FAILED status. Note that this flag will likely be replaced with a new status in future API versions and be deprecated. type: boolean type: description: The type of job being done. type: string example: DB_REFRESH localized_type: description: The i18n translated type of job being done. type: string example: DB Refresh error_details: description: Details about the failure for FAILED jobs. type: string example: Unable to connect to the engine. warning_message: description: Warnings for the job. type: string example: 'Failed to remove local MaskingJob, engineId: 3 localMaskingJobId: 7.' target_id: description: A reference to the job's target. type: string example: vdb-123 target_name: description: A reference to the job's target name. type: string example: vdb start_time: description: The time the job started executing. type: string format: date-time example: '2022-01-02T05:11:24.148000+00:00' update_time: description: The time the job was last updated. type: string format: date-time example: '2022-01-02T06:11:24.148000+00:00' trace_id: description: traceId of the request which created this Job type: string engine_ids: description: IDs of the engines this Job is executing on. type: array items: type: string deprecated: true tags: type: array items: $ref: '#/components/schemas/Tag' engines: type: array items: $ref: '#/components/schemas/Engine' account_id: description: The ID of the account who initiated this job. type: integer example: 1 account_name: description: The account name which initiated this job. It can be either firstname and lastname combination or firstname or lastname or username or email address or Account-. type: string example: User 1 compliance_node_id: description: The ID of the associated compliance node, if applicable. type: string nullable: true compliance_node_name: description: The name of the associated compliance node, if applicable. type: string nullable: true percent_complete: description: Completion percentage of the Job. type: integer minimum: 0 maximum: 100 example: '50' virtualization_tasks: deprecated: true type: array items: $ref: '#/components/schemas/VirtualizationTask' tasks: type: array items: $ref: '#/components/schemas/JobTask' execution_id: description: The ID of the associated masking execution, if any. type: string nullable: true result_type: description: The type of the job result. This is the type of the object present in the result. type: string result: description: The result of the job execution. This is JSON serialized string of the result object whose type is specified by result_type property. type: object discriminator: propertyName: class_type requestBodies: SearchBody: x-skip-codegen-attr: description description: 'A request body containing a filter expression. This enables searching for items matching arbitrarily complex conditions. The list of attributes which can be used in filter expressions is available in the x-filterable vendor extension. # Filter Expression Overview **Note: All keywords are case-insensitive** ## Comparison Operators | Operator | Description | Example | | --- | --- | --- | | CONTAINS | Substring or membership testing for string and list attributes respectively. | field3 CONTAINS ''foobar'', field4 CONTAINS TRUE | | IN | Tests if field is a member of a list literal. List can contain a maximum of 100 values | field2 IN [''Goku'', ''Vegeta''] | | GE | Tests if a field is greater than or equal to a literal value | field1 GE 1.2e-2 | | GT | Tests if a field is greater than a literal value | field1 GT 1.2e-2 | | LE | Tests if a field is less than or equal to a literal value | field1 LE 9000 | | LT | Tests if a field is less than a literal value | field1 LT 9.02 | | NE | Tests if a field is not equal to a literal value | field1 NE 42 | | EQ | Tests if a field is equal to a literal value | field1 EQ 42 | ## Search Operator The SEARCH operator filters for items which have any filterable attribute that contains the input string as a substring, comparison is done case-insensitively. This is not restricted to attributes with string values. Specifically `SEARCH ''12''` would match an item with an attribute with an integer value of `123`. ## Logical Operators Ordered by precedence. | Operator | Description | Example | | --- | --- | --- | | NOT | Logical NOT (Right associative) | NOT field1 LE 9000 | | AND | Logical AND (Left Associative) | field1 GT 9000 AND field2 EQ ''Goku'' | | OR | Logical OR (Left Associative) | field1 GT 9000 OR field2 EQ ''Goku'' | ## Grouping Parenthesis `()` can be used to override operator precedence. For example: NOT (field1 LT 1234 AND field2 CONTAINS ''foo'') ## Literal Values | Literal | Description | Examples | | --- | --- | --- | | Nil | Represents the absence of a value | nil, Nil, nIl, NIL | | Boolean | true/false boolean | true, false, True, False, TRUE, FALSE | | Number | Signed integer and floating point numbers. Also supports scientific notation. | 0, 1, -1, 1.2, 0.35, 1.2e-2, -1.2e+2 | | String | Single or double quoted | "foo", "bar", "foo bar", ''foo'', ''bar'', ''foo bar'' | | Datetime | Formatted according to [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339) | 2018-04-27T18:39:26.397237+00:00 | | List | Comma-separated literals wrapped in square brackets | [0], [0, 1], [''foo'', "bar"] | ## Limitations - A maximum of 8 unique identifiers may be used inside a filter expression. ' content: application/json: schema: $ref: '#/components/schemas/SearchBody' examples: nested: description: 'An example of a nested Object comparison testing that at least one repository has a version which is equal to 19.0.0. ' summary: Nested Object Comparison value: filter_expression: repositories CONTAINS {version eq '19.0.0'} relative: description: 'An example of a relative comparison testing that field1 has a value which is less than 123. ' summary: Relative comparison value: filter_expression: field1 LE 123 nil: description: 'An example of using nil to test for the absence of a value for field2. ' summary: Absence of an attribute value value: filter_expression: field2 EQ NIL non-nil: description: 'An example of using nil to test for the existence of a value for field2. ' summary: Existence of an attribute value value: filter_expression: field2 NE NIL contains: description: 'An example of using the ''CONTAINS'' operator to check if field2 contains the string ''foo''. If field2 is string valued then this is checking if ''foo'' is a substring of field2. If field2 is a list of strings then this is checking if ''foo'' is a member of the list. ' summary: Use of the CONTAINS operator value: filter_expression: field2 CONTAINS 'foo' in: description: 'An example of using the ''IN'' operator to check if field1 is an element of a list literal. ' summary: Use of the IN operator value: filter_expression: field1 IN [1, 2, 3] search: description: 'An example of using the ''SEARCH'' operator to retrieve all elements for which ''foo'' is a substring of a filterable attribute. ' summary: Use of the SEARCH operator value: filter_expression: SEARCH 'foo' parenthesis: description: 'An example of parenthesis being used to group operators & override operator precedence. ' summary: Overriding operator precedence value: filter_expression: field1 LT 1234 AND (field2 CONTAINS 'foo' OR field3 CONTAINS 'bar') DeleteCloudTags: description: The parameters to delete cloud tags content: application/json: schema: x-body-name: deleteCloudTag $ref: '#/components/schemas/DeleteCloudTag' examples: delete_all_tags: description: Delete all tags for given object - No request body required summary: Delete all tags value: {} delete_tags_by_key: description: Delete all tags for given object with matching key summary: Delete tags by key value: key: key-1 delete_tags_by_key_value: description: Delete tag for given object with matching key and value summary: Delete a tag by key & value value: key: key-1 value: value-1 delete_multiple_tags_by_key_value: description: Delete tags for given list of tags with matching key and value summary: Delete multiple tags by key & value value: tags: - key: key-1 value: value-1 mirror_on_cloud: true - key: key-2 value: value-2 mirror_on_cloud: false securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization