# Search masking executions.

Endpoint: POST /executions/search
Version: 3.23.0
Security: ApiKeyAuth

## Security:

  - `ApiKeyAuth` (unknown)
    apiKey in header Authorization

## Query parameters:

  - `limit` (integer)
    Maximum number of objects to return per query. The value must be between 1 and 1000. Default is 100.

  - `cursor` (string)
    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.

  - `sort` (string)
    The field to sort results by. A property name with a prepended '-' signifies a descending order.

## Request body:

  - `application/json` (unknown)
    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.

## Request fields (application/json):

  - `filter_expression` (string)
    Example: string_field CONTAINS "over" AND numberic_field GT 9000 OR string_field2 EQ "Goku"

## Request examples:

  - `Nested Object Comparison` (unknown)
    An example of a nested Object comparison testing that at least one repository has a
version which is equal to 19.0.0.

  - `Relative comparison` (unknown)
    An example of a relative comparison testing that field1 has a
value which is less than 123.

  - `Absence of an attribute value` (unknown)
    An example of using nil to test for the absence of a value for field2.

  - `Existence of an attribute value` (unknown)
    An example of using nil to test for the existence of a value for field2.

  - `Use of the CONTAINS operator` (unknown)
    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.

  - `Use of the IN operator` (unknown)
    An example of using the 'IN' operator to check if field1
is an element of a list literal.

  - `Use of the SEARCH operator` (unknown)
    An example of using the 'SEARCH' operator to retrieve all elements
for which 'foo' is a substring of a filterable attribute.

  - `Overriding operator precedence` (unknown)
    An example of parenthesis being used to group operators & override
operator precedence.

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `items` (array)

  - `items.id` (string)
    The Execution entity ID.
    Example: 414ed52c-fa89-455d-9fb9-9c2fa5115f80

  - `items.engine_id` (string)
    The ID of the engine where this execution ran.
    Example: 1

  - `items.hyperscale_instance_id` (string)

  - `items.engine_name` (string)
    The name of the engine where this execution ran.
    Example: prod01

  - `items.masking_job_id` (string)
    The ID of the masking job that is being executed.
    Example: 2

  - `items.masking_job_name` (string)
    The name of the masking job that is being executed.
    Example: finance-masking-job

  - `items.source_connector_id` (string)
    The ID of the source connector. This field is only used for multi-tenant jobs that are also on-the-fly.
    Example: 1-DATABASE-2

  - `items.target_connector_id` (string)
    The ID of the target connector. This field is only used for multi-tenant jobs.
    Example: 1-DATABASE-3

  - `items.status` (string)
    The status of a masking or discovery job.
    Enum: "PENDING", "QUEUED", "RUNNING", "CANCELLED", "FAILED", "SUCCEEDED", "WARNING", "WAITING"

  - `items.rows_masked` (integer)
    The number of rows masked or profiled so far by this execution. This is not applicable for JSON file type.
    Example: 1000

  - `items.rows_total` (integer)
    The total number of rows that this execution should mask. This value is set to -1 while the total row count is being calculated. This is not applicable for JSON file type.
    Example: 5000

  - `items.bytes_processed` (integer)
    The number of bytes masked so far by this execution. This is only applicable for JSON file type.
    Example: 500

  - `items.bytes_total` (integer)
    The total number of bytes that this execution should mask. This value is set to -1 while the total byte count is being calculated. This is only applicable for JSON file type.
    Example: 5000000

  - `items.start_time` (string)
    The date and time that this execution was started.
    Example: 2021-05-01T09:51:34.148000+00:00

  - `items.submit_time` (string)
    The date and time that this execution was submitted.
    Example: 2021-05-01T08:51:34.148000+00:00

  - `items.end_time` (string)
    The date and time that this execution completed.
    Example: 2021-05-01T11:51:34.148000+00:00

  - `items.run_duration` (integer)
    The time this execution spent running, in milliseconds.
    Example: 4000

  - `items.queue_duration` (integer)
    The time this execution spent in the queue, in milliseconds.
    Example: 1000

  - `items.total_duration` (integer)
    The total time this execution took, in milliseconds.
    Example: 5000

  - `items.account_id` (integer)
    The account id of the DCT user who started this execution.
    Example: 3

  - `items.account_name` (string)
    The account name of the DCT user who started this execution.
    Example: username

  - `items.task_events` (array)
    The progression of steps or events performed by this execution. Only available for executions on masking engines that are version 6.0.14.0 and higher.
    Example: [{"event":"Initializing","status":"SUCCEEDED"},{"event":"Job Completed","status":"FAILED"}]

  - `items.task_events.event` (string)
    The steps or events a task will perform.
    Example: Job Completed

  - `items.task_events.status` (string)
    The state of result of the task event.
    Enum: "CANCELLED", "FAILED", "QUEUED", "RUNNING", "SUCCEEDED", "SKIPPED", "NON_CONFORMANT"

  - `items.hyperscale_task_events` (array)

  - `items.hyperscale_task_events.name` (string)
    Name of the task (Unload, Masking, Load, Post-Load)
    Example: Unload

  - `items.hyperscale_task_events.progress` (number)
    progress of the task (between 0 and 1)
    Example: 0.34

  - `items.hyperscale_task_events.status` (string)
    Enum: "CANCELLED", "CANCEL_INITIATED", "FAILED", "RUNNING", "SUCCEEDED"

  - `items.hyperscale_task_events.processed_objects` (integer)
    The number of objects (tables) already processed by this task.

  - `items.hyperscale_task_events.processed_rows` (integer)
    The number of rows already processed by this task.

  - `items.hyperscale_task_events.processed_constraints` (integer)
    The number of constraints processed by this task (Post-load task only)

  - `items.hyperscale_task_events.total_constraints` (integer)
    The total number of constraints to be processed by this task (Post-load task only)

  - `items.hyperscale_task_events.processed_indexes` (integer)
    The number of indexes processed by this task (Post-load task only)

  - `items.hyperscale_task_events.total_indexes` (integer)
    The total number of indexes to be processed by this task (Post-load task only)

  - `items.hyperscale_task_events.processed_triggers` (integer)
    The number of triggered processed by this task (Post-load task only)

  - `items.hyperscale_task_events.total_triggers` (integer)
    The total number of triggers to be processed by this task (Post-load task only)

  - `items.hyperscale_task_events.start_time` (string)
    The date and time that this task was started.
    Example: 2022-01-02T05:11:24.148000+00:00

  - `items.hyperscale_task_events.end_time` (string)
    The date and time that this task completed.
    Example: 2022-01-02T05:13:24.148000+00:00

  - `items.hyperscale_task_events.errors` (array)

  - `items.hyperscale_task_events.errors.table_name` (string)
    the name of the table for which the error occurred, including the schema.
    Example: public_schema.table_x

  - `items.hyperscale_task_events.errors.error` (string)
    A textual description of the error.

  - `items.progress` (number)
    Progress of the task (value between 0 and 1, Hyperscale executions only)
    Example: 0.34

  - `items.execution_components_total` (integer)
    The total number of execution components in this execution.
    Example: 5

  - `items.execution_components_processed` (integer)
    The number of execution components processed so far in this execution.
    Example: 3

  - `items.collection_execution_id` (string)
    The id of the compliance job collection execution this execution is part of, if any
    Example: 54a0cbff-bdc6-49fd-8e71-e8b570524fe9

  - `items.data_collection_complete` (boolean)
    Indicates whether all peripheral information associated with the execution, including execution components, execution events, logs and discovery results, has been fully collected and finalized.

  - `response_metadata` (object)

  - `response_metadata.prev_cursor` (string)
    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.

  - `response_metadata.next_cursor` (string)
    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.

  - `response_metadata.total` (integer)
    The total number of results. This value may not be provided.

