# Value Filters

## Introduction

ValueFilters offer the possibility to alter the query of a GET-request,\
so that the response contains only the data you are looking for.

As the name indicates, ValueFilters limit the response of a GET-request by validating whether the value of `{field}` matches the expression out of `{filter}` and `{value}`.

Filters are applied as AND queries. If relation-fields are filtered, there will be a **has** constraint applied.

Every public field of the entity the endpoint belongs to, as well as every field\
of related entities, can be filtered.

### Definition

* `{route}` - The endpoint you want to retrieve data of
* `?filter` - To identify the incoming URL parameter
* `[{field}]` - The field the filter will be applied to
* `[{filter}]` - One of the filters listed below. Defaults to [value](#value) when not provided.
* `=[{value}]` - The value(s) that get compared with the value in `[{field}]`

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

{% hint style="info" %}
You can apply filters on fields of a related record and even their relations, too.

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

Note that every relation which is accessed with the query will be resolved and returned by the API.
{% endhint %}

{% hint style="warning" %}
Relations are always in `camelCase`, while field keys are in `snake_case`.
{% endhint %}

## Value

This filter operates the same way as a `like`.

Returns all entries for which the value of `{field}` is contained in `{value}`.

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

## Is Value

Filter that depicts the functionality of the comparison-operator `=`

Returns the entries for which the value of `{field}` equals `{value}`.

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

## Is Not Value

Filter that depicts the functionality of the comparison-operator `!=`

Returns all entries for which the value of `{field}` doesn't equal `{value}`.

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

## Greater Than

Filter that depicts the functionality of the comparison-operator `>`

Returns all entries for which the value of `{field}` is greater than `{value}`.

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

## Greater Than Equal

Filter that depicts the functionality of the comparison-operator `>=`

Returns all entries for which the value of `{field}` is greater than `{value}` or for which the value of `{field}` equals `{value}`.

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

## Lower Than

Filter that depicts the functionality of the comparison-operator `<`.

Returns all entries for which the value of `{field}` is lower than `{value}`.

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

## Lower Than Equal

Filter that depicts the functionality of the comparison-operator `<=`.

Returns all entries for which the value of `{field}` is lower than `{value}` or for which the value of `{field}` equals `{value}`.

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

## Is Null / Is Not Null

This filter expects an integer, which can be `0` or `1`.

Returns all entries for which the value of `{field}` is `NULL`, when `{value}` is set to `1`.

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

Returns all entries for which the value of `{field}` is `NOT NULL`, when `{value}` is set to `0`.

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

## In

This filter expects a string with one or more values, which must be comma-separated.

Returns all entries for which the value of `{field}` equals one of the values in `{value}`.

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

## Not In

This filter expects a string with multiple values, which must be comma-separated.

Returns the entries for which the value of `{field}` doesn't equal one of the values in `{value}`.

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

## Period

This filter expects a string with two date values, which must be comma-separated.

Returns the entries, that lie between those two dates.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.api.intratool.de/introduction/query-manipulation/value-filters.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
