openapi: 3.0.0 info: title: Delphix DCT Algorithms ComplianceNodes 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: ComplianceNodes paths: /compliance-nodes: get: tags: - ComplianceNodes operationId: get_compliance_nodes parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/complianceNodesSortParam' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListComplianceNodesResponse' post: tags: - ComplianceNodes summary: Register a compliance node operationId: register_compliance_node requestBody: content: application/json: schema: x-body-name: compliance_node_register_request $ref: '#/components/schemas/ComplianceNodeRegisterRequest' description: The Compliance Node being registered required: true responses: '201': description: Created Compliance Node. content: application/json: schema: type: object title: ComplianceNodeRegisterResponse properties: id: type: string description: The ID of the created compliance node. job: $ref: '#/components/schemas/Job' description: The registering compliance node. /compliance-nodes/search: post: summary: Search for compliance nodes operationId: search_compliance_nodes tags: - ComplianceNodes x-filterable: fields: id: type: string name: type: string hostname: type: string insecure_ssl: type: boolean unsafe_ssl_hostname_check: type: boolean username: type: string creation_date: type: string account_id: type: integer account_name: type: string status: type: string status_details: type: string job_orchestrator_id: type: string job_orchestrator_name: type: string core_count: type: integer memory_for_jobs: type: number version: type: string hyperscale_instance_id: type: string hyperscale_instance_name: type: string parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/complianceNodesSortParam' requestBody: $ref: '#/components/requestBodies/SearchBody' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListComplianceNodesResponse' /compliance-nodes/{complianceNodeId}: parameters: - $ref: '#/components/parameters/complianceNodeIdParam' get: tags: - ComplianceNodes summary: Retrieve a compliance node by ID. operationId: get_compliance_node_by_id responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ComplianceNode' patch: tags: - ComplianceNodes summary: Update a compliance node. operationId: update_compliance_node requestBody: content: application/json: schema: x-body-name: compliance_node_update_request $ref: '#/components/schemas/ComplianceNodeUpdateRequest' description: The parameters to update a compliance node required: true responses: '200': description: OK content: application/json: schema: type: object title: ComplianceNodeUpdateResponse properties: job: $ref: '#/components/schemas/Job' description: The completed job. delete: tags: - ComplianceNodes summary: Delete a compliance node. operationId: delete_compliance_node responses: '200': description: OK content: application/json: schema: type: object title: ComplianceNodeDeleteResponse properties: job: $ref: '#/components/schemas/Job' description: The completed job. /compliance-nodes/{complianceNodeId}/refreshLogs: parameters: - $ref: '#/components/parameters/complianceNodeIdParam' get: tags: - ComplianceNodes summary: Refresh the logs for a compliance node. operationId: refresh_logs responses: '200': description: OK content: application/json: schema: type: object title: RefreshLogsResponse properties: job: $ref: '#/components/schemas/Job' /compliance-nodes/{complianceNodeId}/logs: parameters: - $ref: '#/components/parameters/complianceNodeIdParam' get: tags: - ComplianceNodes summary: Get log file details for a compliance node. operationId: get_log_file_details responses: '200': description: OK content: application/json: schema: type: object title: ComplianceNodeLogFileDetailsResponse properties: items: type: array items: $ref: '#/components/schemas/ComplianceNodeLogFileDetails' /compliance-nodes/{complianceNodeId}/logs/content: parameters: - $ref: '#/components/parameters/complianceNodeIdParam' get: parameters: - $ref: '#/components/parameters/offsetParam' - $ref: '#/components/parameters/pageSizeParam' - $ref: '#/components/parameters/logFileNumberParam' - $ref: '#/components/parameters/timestampParam' tags: - ComplianceNodes summary: Get log content for a compliance node. operationId: get_log_content responses: '200': description: OK content: application/json: schema: type: object title: ComplianceNodeLogContentResponse properties: log_page_info: type: object properties: log_file_number: type: integer description: The log number of the current log file. next_page_offset: type: integer description: The offset for the next page of log content. total_lines: type: integer description: The total number of lines in the current log file. content: type: array description: The content of the log file. items: type: string components: 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 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 ComplianceNodeRegisterRequest: description: Parameters to register a compliance node. type: object required: - name - hostname - username - password - job_orchestrator_id properties: name: description: The name of the compliance node. type: string example: My Compliance Node hostname: description: The hostname of the compliance node. type: string example: compliance.example.com insecure_ssl: description: 'Allow connections to the compliance node over HTTPs without validating the TLS certificate. Even though the connection to the compliance node might be performed over HTTPs, setting this property eliminates the protection against a man-in-the-middle attach for connections to this node. Instead, consider configuring DCT with Certificate Authority certificates. ' type: boolean default: false example: false unsafe_ssl_hostname_check: description: 'Ignore validation of the name associated to the TLS certificate when connecting to the compliance node over HTTPs. Setting this value must only be done if the TLS certificate of the compliance node does not match the hostname, and the TLS configuration of the compliance node cannot be fixed. Setting this property reduces the protection against a man-in-the-middle attack for connections to this compliance node. This is ignored if insecure_ssl is set. ' type: boolean default: false example: false username: description: The username for connecting to the compliance node. type: string example: user1 password: x-dct-toolkit-credential-field: true description: The password for connecting to the compliance node. type: string example: secret job_orchestrator_id: description: The job orchestrator id associated with the compliance node. type: string example: f8e7d6c5-b4a3-2109-8765-43210fedcba9 hyperscale_instance_id: description: The ID of the Hyperscale Instance to associate the compliance node with. Must belong to the same Job Orchestrator. type: string example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 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" ComplianceNodeLogFileDetails: description: Details of a compliance node log file. type: object properties: file_name: description: The name of the log file. type: string example: 6a88560a-7acb-409b-a0d1-341a2d273489.1768936684438.log file_download_id: description: The file download id used to download the log file. type: string ComplianceNodeUpdateRequest: description: Parameters to update a compliance node. type: object properties: name: description: The name of the compliance node. type: string example: My Compliance Node hostname: description: The hostname of the compliance node. type: string example: compliance.example.com username: description: The username for connecting to the compliance node. type: string example: user1 password: x-dct-toolkit-credential-field: true description: The password for connecting to the compliance node. type: string example: secret insecure_ssl: description: 'Allow connections to the compliance node over HTTPs without validating the TLS certificate. Even though the connection to the compliance node might be performed over HTTPs, setting this property eliminates the protection against a man-in-the-middle attach for connections to this node. Instead, consider configuring DCT with Certificate Authority certificates. ' type: boolean example: false unsafe_ssl_hostname_check: description: 'Ignore validation of the name associated to the TLS certificate when connecting to the compliance node over HTTPs. Setting this value must only be done if the TLS certificate of the compliance node does not match the hostname, and the TLS configuration of the compliance node cannot be fixed. Setting this property reduces the protection against a man-in-the-middle attack for connections to this compliance node. This is ignored if insecure_ssl is set. ' type: boolean example: false 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 ComplianceNode: description: A compliance node. type: object properties: id: description: The unique identifier of the compliance node. type: string example: a1b2c3d4-e5f6-7890-1234-567890abcdef name: description: The name of the compliance node. type: string example: My Compliance Node hostname: description: The hostname of the compliance node. type: string example: compliance.example.com insecure_ssl: description: 'Allow connections to the compliance node over HTTPs without validating the TLS certificate. Even though the connection to the compliance node might be performed over HTTPs, setting this property eliminates the protection against a man-in-the-middle attach for connections to this node. Instead, consider configuring DCT with Certificate Authority certificates. ' type: boolean default: false example: false unsafe_ssl_hostname_check: description: 'Ignore validation of the name associated to the TLS certificate when connecting to the compliance node over HTTPs. Setting this value must only be done if the TLS certificate of the compliance node does not match the hostname, and the TLS configuration of the compliance node cannot be fixed. Setting this property reduces the protection against a man-in-the-middle attack for connections to this compliance node. This is ignored if insecure_ssl is set. ' type: boolean default: false example: false username: description: The username for connecting to the compliance node. type: string example: user1 password: x-dct-toolkit-credential-field: true description: The password for connecting to the compliance node. type: string example: secret creation_date: description: The date and time when the compliance node was created. type: string readOnly: true format: date-time example: '2024-06-01T08:51:34.148000+00:00' account_id: description: The ID of the account associated with the compliance node. type: integer format: int64 readOnly: true example: 1 account_name: description: The account name of the DCT user who created this compliance node. type: string readOnly: true example: username status: description: The status of the compliance node. type: string readOnly: true enum: - ONLINE - CONNECTION_ERROR - BAD_CREDENTIALS example: ONLINE status_details: type: string readOnly: true description: Additional details about the status of the compliance node. example: Connection successful job_orchestrator_id: description: The job orchestrator id associated with the compliance node. type: string example: f8e7d6c5-b4a3-2109-8765-43210fedcba9 job_orchestrator_name: description: The job orchestrator name associated with the compliance node. type: string example: Job Orchestrator core_count: description: The number of CPU cores available on the compliance node. type: integer readOnly: true example: 8 memory_for_jobs: description: The amount of memory (in MB) available for jobs on the compliance node. type: number readOnly: true example: 16384 version: description: The version of the compliance node. type: string readOnly: true example: 1.0.0 api_version: description: The API version of the compliance node. type: string readOnly: true example: v1 hyperscale_instance_id: description: The ID of the hyperscale instance associated with the compliance node. type: string nullable: true example: f8e7d6c5-b4a3-2109-8765-43210fedcba9 hyperscale_instance_name: description: The name of the hyperscale instance associated with the compliance node. type: string nullable: true example: Hyperscale Orchestrator ListComplianceNodesResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/ComplianceNode' response_metadata: $ref: '#/components/schemas/PaginatedResponseMetadata' 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: type: string description: The ID of the associated compliance node, if applicable. nullable: true compliance_node_name: type: string description: The name of the associated compliance node, if applicable. 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 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') parameters: logFileNumberParam: name: logFileNumber in: query required: false schema: type: integer 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 complianceNodesSortParam: name: sort in: query description: The field to sort results by. A property name with a prepended '-' signifies a descending order. example: id required: false schema: type: string enum: - id - -id - name - -name - hostname - -hostname - insecure_ssl - -insecure_ssl - unsafe_ssl_hostname_check - -unsafe_ssl_hostname_check - username - -username - creation_date - -creation_date - account_id - -account_id - account_name - -account_name - status - -status - status_details - -status_details - job_orchestrator_id - -job_orchestrator_id - job_orchestrator_name - -job_orchestrator_name - core_count - -core_count - memory_for_jobs - -memory_for_jobs - version - -version - hyperscale_instance_id - -hyperscale_instance_id - hyperscale_instance_name - -hyperscale_instance_name nullable: true example: name timestampParam: name: timestamp in: query required: false schema: type: string format: date-time complianceNodeIdParam: in: path name: complianceNodeId schema: type: string minLength: 1 required: true description: The ID of the Compliance Node. offsetParam: name: offset in: query required: false schema: type: integer pageSizeParam: name: pageSize in: query required: false schema: type: integer 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 securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization