openapi: 3.0.0 info: title: Delphix DCT Algorithms 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: Algorithms paths: /algorithms: get: tags: - Algorithms summary: Retrieve the list of algorithms. operationId: get_algorithms parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/algorithmsSortParam' responses: '200': description: OK content: application/json: schema: type: object title: ListAlgorithmsResponse properties: items: type: array items: $ref: '#/components/schemas/Algorithm' response_metadata: $ref: '#/components/schemas/PaginatedResponseMetadata' post: tags: - Algorithms summary: Create a new algorithm. operationId: create_algorithm requestBody: content: application/json: schema: x-body-name: algorithm_create_request $ref: '#/components/schemas/AlgorithmCreateRequest' description: The new Algorithm to create required: true responses: '201': description: Algorithm creation initiated. content: application/json: schema: type: object title: AlgorithmCreateResponse properties: job: $ref: '#/components/schemas/Job' description: The initiated job. id: type: string description: The id of the created algorithm. /algorithms/{algorithmId}: parameters: - $ref: '#/components/parameters/algorithmIdParam' get: summary: Get an algorithm by ID. operationId: get_algorithm_by_id tags: - Algorithms responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Algorithm' patch: tags: - Algorithms summary: Update an Algorithm. operationId: update_algorithm requestBody: content: application/json: schema: x-body-name: algorithm_update_request $ref: '#/components/schemas/AlgorithmUpdateRequest' description: Update an Algorithm. required: true responses: '200': description: Algorithm update initiated. content: application/json: schema: type: object title: AlgorithmUpdateResponse properties: job: $ref: '#/components/schemas/Job' description: The initiated job. delete: tags: - Algorithms summary: Delete an Algorithm. operationId: delete_algorithm responses: '200': description: OK content: application/json: schema: type: object title: AlgorithmDeleteResponse properties: job: $ref: '#/components/schemas/Job' description: The completed job. /algorithms/{algorithmId}/mappings/import: parameters: - $ref: '#/components/parameters/algorithmIdParam' post: tags: - Algorithms summary: Import mappings for a Mapping Algorithm. operationId: import_algorithm_mappings requestBody: content: application/json: schema: x-body-name: algorithm_mappings_import_request $ref: '#/components/schemas/AlgorithmMappingsImportRequest' description: The mappings to import for the specified Algorithm. required: true responses: '201': description: Mappings import is initiated. content: application/json: schema: type: object title: AlgorithmMappingsImportResponse properties: job: $ref: '#/components/schemas/Job' description: The initiated job. /algorithms/{algorithmId}/mappings: parameters: - $ref: '#/components/parameters/algorithmIdParam' delete: tags: - Algorithms summary: Delete mappings of a Mapping Algorithm. operationId: delete_mappings responses: '200': description: OK content: application/json: schema: type: object title: AlgorithmDeleteMappingsResponse properties: job: $ref: '#/components/schemas/Job' description: The completed job. /algorithms/{algorithmId}/mappings/reset: parameters: - $ref: '#/components/parameters/algorithmIdParam' post: tags: - Algorithms summary: Reset mappings for a Mapping Algorithm. operationId: reset_algorithm_mappings responses: '200': description: OK content: application/json: schema: type: object title: AlgorithmMappingsResetResponse properties: job: $ref: '#/components/schemas/Job' description: The completed job. /algorithms/{algorithmId}/mappings/stats: parameters: - $ref: '#/components/parameters/algorithmIdParam' get: tags: - Algorithms summary: Get mappings statistics of a Mapping algorithm. operationId: get_mappings_stats responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MappingsStats' /algorithms/search: post: tags: - Algorithms summary: Search for algorithms. operationId: search_algorithms x-filterable: fields: id: type: string name: type: string description: type: string framework_name: type: string framework_id: type: string plugin_name: type: string plugin_id: type: string engine_name: type: string engine_id: type: string revision_hash: type: string create_date: type: string account_id: type: integer account_name: type: string dct_managed: type: boolean config_invalid: type: boolean is_tokenization_supported: type: boolean tags: type: array[object] fields: key: type: string value: type: string parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/algorithmsSortParam' requestBody: $ref: '#/components/requestBodies/SearchBody' responses: '200': description: OK content: application/json: schema: type: object title: SearchAlgorithmsResponse properties: items: type: array items: $ref: '#/components/schemas/Algorithm' response_metadata: $ref: '#/components/schemas/PaginatedResponseMetadata' /algorithms/{algorithmId}/tags: parameters: - $ref: '#/components/parameters/algorithmIdParam' get: tags: - Algorithms summary: Get tags for an Algorithm. operationId: get_algorithm_tags responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/TagsResponse' post: tags: - Algorithms summary: Create tags for an Algorithm. operationId: create_algorithm_tags requestBody: content: application/json: schema: x-body-name: algorithm_tags $ref: '#/components/schemas/TagsRequest' description: Tags information for Algorithm. required: true responses: '201': description: Algorithm tags created content: application/json: schema: $ref: '#/components/schemas/TagsResponse' /algorithms/{algorithmId}/tags/delete: parameters: - $ref: '#/components/parameters/algorithmIdParam' post: tags: - Algorithms summary: Delete tags for an Algorithm. operationId: delete_algorithm_tags requestBody: $ref: '#/components/requestBodies/DeleteTags' responses: '204': description: No Content /algorithms/{algorithmId}/dependencies: parameters: - $ref: '#/components/parameters/algorithmIdParam' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/dependenciesSortParam' get: summary: Get dependencies of an algorithm by ID. operationId: get_algorithm_dependencies_by_id tags: - Algorithms responses: '200': description: OK content: application/json: schema: type: object title: ListAlgorithmDependenciesResponse properties: items: type: array items: $ref: '#/components/schemas/Dependency' response_metadata: $ref: '#/components/schemas/PaginatedResponseMetadata' /algorithms/{algorithmId}/dependencies/search: post: tags: - Algorithms summary: Search for algorithm dependencies. operationId: search_algorithm_dependencies x-filterable: fields: child_id: type: string child_name: type: string child_type: type: string parameters: - $ref: '#/components/parameters/algorithmIdParam' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/dependenciesSortParam' requestBody: $ref: '#/components/requestBodies/SearchBody' responses: '200': description: OK content: application/json: schema: type: object title: SearchAlgorithmDependenciesResponse properties: items: type: array items: $ref: '#/components/schemas/Dependency' response_metadata: $ref: '#/components/schemas/PaginatedResponseMetadata' /algorithms/validate-config: post: tags: - Algorithms summary: Validate the algorithm configuration of a given framework. operationId: validate_algorithm_config requestBody: content: application/json: schema: x-body-name: algorithm_config_validate_request $ref: '#/components/schemas/AlgorithmConfigValidateRequest' description: The algorithm configuration to validate of a given framework. required: true responses: '201': description: Validate result. content: application/json: schema: type: object title: AlgorithmConfigValidateResponse properties: job: $ref: '#/components/schemas/Job' description: The validation job. is_valid: type: boolean description: Whether the configuration is valid. error_message: type: string description: The error message if the configuration is invalid. components: parameters: algorithmsSortParam: 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 - description - -description - plugin_name - -plugin_name - framework_name - -framework_name - create_date - -create_date - engine_name - -engine_name - engine_id - -engine_id - revision_hash - -revision_hash - account_id - -account_id - account_name - -account_name - dct_managed - -dct_managed - config_invalid - -config_invalid - is_default_instance - -is_default_instance - is_tokenization_supported - -is_tokenization_supported nullable: true example: name algorithmIdParam: in: path name: algorithmId schema: type: string minLength: 1 required: true description: The ID of the Algorithm. dependenciesSortParam: 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: - child_id - -child_id - child_name - -child_name - child_type - -child_type nullable: true example: child_id 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 AlgorithmMappingsImportRequest: description: Parameters to import algorithm mappings from a file. type: object required: - fileReferenceId - mappingFileType properties: fileReferenceId: description: The reference URI of the uploaded file to be installed. This file should have been uploaded via the /fileUpload endpoint. type: string passphrase: description: The passphrase that an exported CSV mapping file was encrypted with. This is only needed if adding mappings that were previously exported. type: string mappingFileType: description: The type of the file provided. If PLAINTEXT is chosen, the file is expected to contain newline delimited outputs. If CSV is chosen, the file is expected to conform to RFC4180. Additionally, 2 columns are expected - input and output. The first row of the CSV must be a header. type: string $ref: '#/components/schemas/MappingFileType' AlgorithmCreateRequest: description: Parameters to create a masking algorithm. type: object required: - name - config - framework_id properties: name: description: The name of this Algorithm. type: string example: Address description: description: A description of this algorithm. type: string config: description: The configuration of this algorithm. type: object additionalProperties: true framework_id: description: Id for the framework of this algorithm. type: string data_class_ids: description: The data classes this algorithm to be associated with. type: array items: type: string make_current_account_owner: type: boolean default: true description: Whether the account creating this algorithm must be configured as owner of it. tags: description: The tags of this algorithm. type: array items: $ref: '#/components/schemas/Tag' VirtualizationTaskEvent: deprecated: true properties: message_details: type: string MappingFileType: description: The type of mapping file. type: string enum: - PLAINTEXT - CSV 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 JobTaskEvent: properties: message_details: type: string DeleteTag: 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/Tag' 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 TagsRequest: type: object required: - tags properties: tags: description: Array of tags with key value pairs type: array items: $ref: '#/components/schemas/Tag' minItems: 1 maxItems: 1000 uniqueItems: true MappingsStats: description: Statistics of the mappings. type: object properties: total_mappings: description: The total number of mappings. type: integer format: int64 example: 1000 unused_mappings: description: The number of unused mappings. type: integer format: int64 example: 100 Dependency: description: A dependency relationship. type: object properties: id: type: string description: Unique ID for this Dependency. child_id: description: The ID of the child entity. type: string example: aec2d976-6b7e-43f4-9212-90f4dc6e324fff child_name: description: The name of the child entity. type: string example: My File child_type: description: The type of the child entity. type: string example: MASKING_FILE_UPLOAD 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" AlgorithmField: description: The algorithm field details for a multi-column/multi-condition algorithm type: object properties: id: description: The id of the algorithm field. type: string example: 20b4692e-381d-40a0-a46e-0ba7658acaf3 readOnly: true name: description: The name of the algorithm field. type: string example: ADDRESS_LINE1 readOnly: true type: description: The type of algorithm field. type: string enum: - BIG_DECIMAL - LOCAL_DATE_TIME - STRING - BYTE_BUFFER example: STRING readOnly: true is_read_only: description: Indicates whether the field is read-only. Read-only fields are taken as input by the masking algorithm but not masked. type: boolean readOnly: true is_optional: description: Indicates whether the field is optional. Optional fields do not have to be assigned to a real data field or column in order for a masking assignment to be considered valid. type: boolean readOnly: true description: description: The description of the algorithm field. type: string readOnly: 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 AlgorithmUpdateRequest: description: Parameters to update a masking algorithm. type: object properties: name: description: The name of this Algorithm. type: string example: Address description: description: A description of this algorithm. type: string config: description: The configuration of this algorithm. type: object additionalProperties: true TagsResponse: type: object properties: tags: description: Array of tags with key value pairs type: array items: $ref: '#/components/schemas/Tag' Algorithm: description: A masking algorithm. type: object properties: id: description: The algorithm entity ID. type: string example: a638d976-6b7e-43f4-9212-90f4dc6d405c name: description: The name of this algorithm. type: string example: Address description: description: A description of this algorithm. type: string nullable: true plugin_name: description: The name of the plugin that this algorithm belongs to. type: string example: dlpx-core plugin_id: description: The id of the plugin that this algorithm belongs to. type: string example: a638d976-6b7e-43f4-9212-90f4dc6d405c framework_name: description: The name of the framework that this algorithm belongs to. type: string example: Secure Lookup framework_id: description: The id of the framework that this algorithm belongs to. type: string example: a638d976-6b7e-43f4-9212-90f4dc6d405c engine_name: description: The name of the origin engine that this algorithm belongs to. type: string example: Compliance Engine 1 engine_id: description: The id of the origin engine that this algorithm belongs to. type: string example: a638d976-6b7e-43f4-9212-90f4dc6d405c revision_hash: description: The export revision hash of this algorithm from the source engine. type: string example: 90f4dc6d405c config: description: The configuration of this algorithm. type: object additionalProperties: true create_date: description: The date and time this algorithm was created. type: string format: date-time example: '2022-11-30T08:51:34.148000+00:00' account_id: description: The ID of the account who created this algorithm. type: integer format: int64 readOnly: true example: 1 account_name: description: The account name of the DCT user who created this algorithm. type: string readOnly: true example: John Doe dct_managed: description: Whether this algorithm is managed by DCT or not. type: boolean readOnly: true config_invalid: description: Whether this algorithm has invalid configuration. Config may become invalid following a DCT upgrade due to changes in the plugin. This field is only applicable to DCT managed algorithms. type: boolean readOnly: true is_default_instance: description: Whether this algorithm is defined in the plugin. type: boolean readOnly: true is_tokenization_supported: description: Whether this algorithm supports tokenization (re-identification). Depends on the algorithm configuration. type: boolean readOnly: true nullable: true fields: description: The list of fields if it is a multi-column/multi-condition algorithm. type: array items: $ref: '#/components/schemas/AlgorithmField' tags: description: The tags of this algorithm. type: array items: $ref: '#/components/schemas/Tag' AlgorithmConfigValidateRequest: description: Parameters to validate a masking algorithm configuration of a given framework. type: object required: - name - config - framework_id properties: name: description: The name of this Algorithm. type: string example: Address config: description: The configuration of this algorithm. type: object additionalProperties: true framework_id: description: Id for the framework of this algorithm. type: string algorithm_id: description: The ID or name of an existing mapping algorithm to be updated. This is only needed when validating an existing mapping algorithm with new configuration, and can be omitted when validating non-mapping algorithms or when validating a new algorithm prior to creation. type: string 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') DeleteTags: description: The parameters to delete tags content: application/json: schema: x-body-name: environment $ref: '#/components/schemas/DeleteTag' 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 - key: key-2 value: value-2 securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization