# Search for synthetic fields associated with the specified synthetic data application.

Endpoint: POST /synthetic/applications/{syntheticApplicationId}/fields/search
Version: 3.30.0
Security: ApiKeyAuth

## Security:

  - `ApiKeyAuth` (unknown)
    apiKey in header Authorization

## Path parameters:

  - `syntheticApplicationId` (string, required)
    The id of the synthetic data application

## 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 id of the field
    Example: 1

  - `items.name` (string, required)
    The name of this field. This value must be unique among all fields in a particular structure.

  - `items.structure_id` (string)
    The id of the structure this field belongs to.
    Example: 3

  - `items.structure_name` (string)
    The name of the structure this field belongs to.
    Example: CUSTOMERS

  - `items.schema_name` (string)
    The schema name of the connector mapping for the structure this field belongs to.
    Example: dbo

  - `items.field_order` (integer)
    The order of this field among all fields in the structure.
    Example: 2

  - `items.field_max_length` (integer)
    The maximum length of this field in characters, if available.
    Example: 255

  - `items.field_precision` (integer)
    The numerical precision of this field, if available.
    Example: 4

  - `items.field_scale` (integer)
    The numerical scale of this field, if available.
    Example: 10

  - `items.sql_type` (integer)
    The sql type of this field, if available. Refer to the Javadoc for class java.sql.Types.
    Example: 12

  - `items.display_type` (string)
    The text representation of the underlying data type for this field, if available.
    Example: VARCHAR2

  - `items.is_indexed` (boolean)
    Whether there is a database index covering this field or column.
    Example: true

  - `items.is_unique` (boolean)
    Whether values for this field must be unique among.
    Example: false

  - `items.is_nullable` (boolean)
    Whether value for this field or column can be null
    Example: true

  - `items.is_primary_key` (boolean)
    Whether this field is the primary key for the database table to which it belongs.
    Example: false

  - `items.is_foreign_key` (boolean)
    Whether this field is a foreign key for a column in another database table.
    Example: false

  - `items.is_identity` (boolean)
    Whether this field is a database-managed identity column (e.g. Oracle `GENERATED AS IDENTITY`). Populated from schema sync.
    Example: true

  - `items.identity_generation_type` (string)
    For identity columns, how the database generates values. `ALWAYS` means the database always supplies the value and rejects user-supplied values; `BY DEFAULT` means the database supplies a value only when the caller omits one. Null for non-identity columns. Populated from schema sync.
    Example: ALWAYS

  - `items.assignment_method` (string)
    The method used to assign a generator for this field.
    Enum: "AUTO_DISCOVERY", "AUTO_DISCOVERY_CUSTOM", "DEEP_SEARCH", "USER_DATA_CLASS", "USER_UNASSIGNED", "USER_OVERRIDE", "USER_CUSTOM", "LLM_ASSIGNED", "DATA_CATEGORICAL", "DATA_SEQUENCE", "DATA_UNIQUE_SEQUENCE", "DATA_DATETIME", "DATA_REGEX"

  - `items.group_name` (string)
    UI-facing label correlating this field's generator assignment with other fields into one multi-column group. Only set when the resolved framework supports multiple named outputs (today, only MultiOutputFunctionalGenerator); null for a solo (single-field) assignment.
    Example: loc

  - `items.generator_id` (string)
    The id of the generator that will be used to generate values for this field.
    Example: 102

  - `items.generator_framework_id` (string)
    The id of the generator framework that will be used to generate values for this field. This value is populated whenever a generator is assigned to the field, including auto-discovery assignments.
    Example: null

  - `items.generator_config` (object)
    The configuration JSON for the generator that will be used to generate values for this field. This value is present only when a custom assignment has been made for the field.
    Example: {"key":"regex","value":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$"}

  - `items.generator_bindings` (object)
    Per-field resolution of the placeholder inputs declared by the shared functional generator template referenced by generator_id. Shape is `{"inputs": [...]}`, where each entry restates variableName and inputType plus the resolved value: `field` for FIELD, `seedListFileId` for SEEDLIST (must reference an existing seed list file), `staticValue` for STATIC, `wholeFileFileId` for WHOLE_FILE (must reference an existing seed list file). An input may be omitted entirely from generator_bindings if the generator template already declares a non-empty default for it (a STATIC or WHOLE_FILE input always has one; a FIELD or SEEDLIST input may optionally have one) -- omitting it falls back to that template default. Only meaningful alongside generator_id.
    Example: {"inputs":[{"variableName":"customer_name","inputType":"FIELD","field":"full_name"},{"variableName":"city_lookup","inputType":"SEEDLIST","seedListFileId":"053ed830-81a2-4e48-b3ec-71b224ae8a39"},{"vari…

  - `items.account_id` (integer)
    The ID of the account who created this field.
    Example: 1

  - `items.creation_date` (string)
    The date this field was created.
    Example: 2022-11-30T08:51:34.148Z

  - `items.updated_date` (string)
    The date this field was last updated.
    Example: 2023-01-15T10:23:11.000Z

  - `items.data_overflow_strategy` (string)
    Per-field override of the generator instance's data_overflow_strategy. NOOP skips the length/precision/scale check entirely, writing the generated value as-is even if it exceeds the field's constraint (may cause a downstream database error); TRIM trims or rounds to fit; ERROR fails the job. Null means use the instance default.
    Enum: "NOOP", "TRIM", "ERROR"

  - `items.check_constraints` (array)
    CHECK constraints that include this field. A constraint spanning multiple columns appears in every affected column's list (per-column duplicate, not a table-level list).

  - `items.check_constraints.name` (string)
    The name of the CHECK constraint.
    Example: ck_date_range

  - `items.check_constraints.expression` (string)
    The constraint's check condition/expression, as discovered from the source database.
    Example: start_date < end_date

  - `items.check_constraints.affected_fields` (array)
    Every field this constraint spans, including this one.

  - `items.check_constraints.affected_fields.id` (string)
    Example: 42

  - `items.check_constraints.affected_fields.name` (string)
    Example: end_date

  - `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.

