2019-10-05 17:58:59 +02:00
# Parameters
2019-10-23 10:11:53 +02:00
See the [parameters' concepts ](../concepts/parameters.md ) for details.
2019-10-05 17:58:59 +02:00
::: warning
2019-10-24 15:08:42 +02:00
By default, the filters can only be used from `find` endpoints generated by the Content Type Builder and the [CLI ](../cli/CLI.md ). If you need to implement a filter system somewhere else, read the [programmatic usage ](../concepts/parameters.md ) section.
2019-10-05 17:58:59 +02:00
:::
## Available operators
The available operators are separated in four different categories:
- [Filters ](#filters )
- [Sort ](#sort )
- [Limit ](#limit )
- [Start ](#start )
## Filters
Filters are used as a suffix of a field name:
- Not suffix or `eq` : Equals
- `ne` : Not equals
- `lt` : Lower than
- `gt` : Greater than
- `lte` : Lower than or equal to
- `gte` : Greater than or equal to
- `in` : Included in an array of values
- `nin` : Isn't included in an array of values
- `contains` : Contains
- `ncontains` : Doesn't contain
- `containss` : Contains case sensitive
- `ncontainss` : Doesn't contain case sensitive
- `null` : Is null/Is not null
### Examples
#### Find users having `John` as first name.
`GET /users?firstName=John`
or
`GET /users?firstName_eq=John`
#### Find restaurants having a price equal or greater than `3`.
`GET /restaurants?price_gte=3`
#### Find multiple restaurant with id 3, 6, 8
`GET /restaurants?id_in=3&id_in=6&id_in=8`
#### Or clauses
If you use the same operator (except for in and nin) the values will be used to build an `OR` query
`GET /restaurants?name_contains=pizza&name_contains=giovanni`
## Deep filtering
Find restaurants owned by a chef who belongs to a restaurant with star equal to 5
`GET /restaurants?chef.restraurant.star=5`
::: warning
Querying your API with deep filters may cause performance issues.
If one of your deep filtering queries is too slow, we recommend building a custom route with an optimized version of your query.
:::
::: note
This feature doesn't allow you to filter nested models, e.g `Find users and only return their posts older than yesterday` .
To achieve this, there are two options:
- Either build a custom route or modify your services
2019-10-08 15:23:46 +02:00
- Use [GraphQL ](../plugins/graphql.md#query-api )
2019-10-05 17:58:59 +02:00
:::
::: warning
This feature isn't available for the `upload` plugin.
:::
## Sort
Sort according to a specific field.
### Example
#### Sort users by email.
- ASC: `GET /users?_sort=email:ASC`
- DESC: `GET /users?_sort=email:DESC`
#### Sorting on multiple fileds
- `GET /users?_sort=email:asc,dateField:desc`
- `GET /users?_sort=email:DESC,username:ASC`
## Limit
Limit the size of the returned results.
### Example
#### Limit the result length to 30.
`GET /users?_limit=30`
You can require the full data set by passing a limit equal to `-1`
## Start
Skip a specific number of entries (especially useful for pagination).
### Example
#### Get the second page of results.
`GET /users?_start=10&_limit=10`