> For the complete documentation index, see [llms.txt](https://docs.api.intratool.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.api.intratool.de/introduction/query-manipulation/value-filters.md).

# Value Filters

Value Filters restrict `GET` results by comparing public fields with request values. Filters use `AND` semantics when a request contains multiple conditions.

Filtering a related field adds a relation constraint. Public fields on the requested resource and its publicly accessible relations can be addressed with dot notation.

## Syntax

* `{route}` - Endpoint from which records are retrieved.
* `?filter` - Query parameter containing the field filters.
* `[{field}]` - Public field to which the filter applies.
* `[{filter}]` - Filter key documented below. Defaults to [`value`](#value) when omitted.
* `{value}` - Request value compared with the affected field.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][{filter}]={value}`

{% hint style="info" %}
Value Filters can address fields on related records and nested relations.

`?filter[user.role.department.title]=TestDepartment`

Every relation addressed by a filter is resolved and returned by the API.
{% endhint %}

{% hint style="warning" %}
Use `camelCase` for relation names and `snake_case` for field keys.
{% endhint %}

## Value

The `value` filter performs a partial comparison equivalent to `LIKE`. It returns records whose affected field value is contained in `{value}`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][value]={value}`

## Is Value

The `is` filter performs an exact `=` comparison and returns records whose affected field equals `{value}`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][is]={value}`

## Is Not Value

The `not` filter performs a `!=` comparison and returns records whose affected field does not equal `{value}`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][not]={value}`

## Greater Than

The `gt` filter performs a `>` comparison and returns records whose affected field is greater than `{value}`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][gt]={value}`

## Greater Than or Equal

The `gte` filter performs a `>=` comparison and returns records whose affected field is greater than or equal to `{value}`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][gte]={value}`

## Less Than

The `lt` filter performs a `<` comparison and returns records whose affected field is less than `{value}`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][lt]={value}`

## Less Than or Equal

The `lte` filter performs a `<=` comparison and returns records whose affected field is less than or equal to `{value}`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][lte]={value}`

## Null Checks

The `is_null` filter accepts `0` or `1`.

Pass `1` to return records whose affected field is `null`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][is_null]={1}`

Pass `0` to return records whose affected field is not `null`.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][is_null]={0}`

## In

The `in` filter accepts one or more comma-separated values and returns records whose affected field equals any supplied value.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][in]={value}`

## Not In

The `nin` filter accepts multiple comma-separated values and returns records whose affected field does not equal any supplied value.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][nin]={value}`

## Period

The `period` filter accepts two comma-separated dates and returns records whose affected field lies within that period.

<mark style="color:green;">`GET`</mark> `/api/{route}?filter[{field}][period]={value}`
