* items semi complete
* updated items page to use snippet toggler and migrated endpoint docs to use it
* updated files page to use snippet toggler and migrated REST and GraphQL endpoint docs to it
* updated activity page to use snippet toggler and migrated REST and GraphQL endpoint doc to it
* updated collections page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* updated dashboards page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated extensions page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated fields page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated flows page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated folders page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated notifications page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated operations page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated panels page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated permissions page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated presets page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated relations page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated revisions page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated roles page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Made headlines consistant with the rest of the doc pages
* Updated server page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated settings page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated shares page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated translations page to use snippet togglers and migrated REST endpoint docs to them
* Updated users page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated utilities page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated webhooks page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated authentication page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated Global Parameters page to use snippet togglers where there are adjacent REST and GraphQL Examples
* Added SDK code snippets to items page and made generic variables consistant
* Added SDK code snippets to files page and made generic variables consistant
* Few lang changes for files page
* Added SDK code snippets to activity page and made generic variables consistant
* Added SDK code snippets to collections page and made generic variables consistant
* Added SDK code snippets to dashboards page and made generic variables consistant
* removed query word from query parameter objects
* Added SDK code snippets to fields page and made generic variables consistant
* SnippetToggler border
* Used dynamic border color for snippettoggler heading
* Spacing top and bottom of snippet toggler in docs
* Removed extra HRs
* Remove manual TOC in query reference
* Small code styling change in items page
* Updated users page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* dashboards fixed up property names
* Small copy update on extensions page
* Updated keys in delete mult notifications REST
* Updated keys in operations
* Update keys in panel delete many
* Update keys in permissions
* Added quotes around generic example ID strings
* Added code formatting to final example in share public info
* Format files
* Refined sidebar
* Insert newline before ending template tags
* Fixed extra closing tags, causing an error, un users ref
* Text Formatting Users
* Put GQL related notes inside toggler
* Added SDK code snippets to flows page and made generic variables consistant
* Added SDK code snippets to folder page and made generic variables consistant
* fixing whitepsace for flows and folders page
* Consistent newlines in SnippetToggler usages
* Run prettier
* Fix 'alwaysDark' definition
* Home page snippet toggler style fixes
* Fix snippet toggler lang hover color in light mode
* Introduce different code theme for light mode
* Added SDK code snippets to notifications page and made generic variables consistant
* Switch to 'material-theme-lighter'
* Format file
* Fix tip
* Fix tip in sdk ref
* Consistent spacing for custom containers
* Added SDK code snippets to operations page and made generic variables consistant
* Lint & format code blocks
* Lint & format operations
* Added SDK code snippets to panels page and made generic variables consistant
* Added SDK code snippets to permissions page and made generic variables consistant
* Added SDK code snippets to presets page and made generic variables consistant
* Added SDK code snippets to relations page and made generic variables consistant
* Added SDK code snippets to revisions page and made generic variables consistant
* Added SDK code snippets to roles page and made generic variables consistant
* Added SDK code snippets to server page and made generic variables consistant
* Added SDK code snippets to settings page and made generic variables consistant
* app_url -> directus_project_url
* Omitted auth details in delete multiple files
* Added quotes to values in roles
* Upload a file snippets
* Pluralization for upload/import files
* More files functions typos
* Added SDK code snippets to shares page (still missing createShare(s) as endpoint not functioning currently) and made generic variables consistant
* Added SDK code snippets to translations page (missing delete endponts because not working) and made generic variables consistant
* Added SDK code snippets to users page and made generic variables consistant
* Added SDK code snippets to webhooks page and made generic variables consistant
* Added SDK code snippets to utilites page (except cleaning cache, will be tested and added in later commit) and made generic variables consistant
* Added SDK code snippets to auth page (not login, refresh, and logout though due to errors)
* Added SDK code snippets for utilsExport and clearCache
* added github username be7DOTis to contributors
* Omit auth commands in updateComment
* utilsImport
* rename app_url generic value
* changed instances of updated*operation* to update*Operation*
* missed some 'updated' changse
* Added SDK Snippets to Query Parameters page
* Add section on file security
* added create(s)Shares SDK snippet to shares page
* added console.log to create snippets
* Added delete(s)Webhook SDK snippet to webhooks page
* Added SDK snippets to extensions page
* Added create/updateSingleton section to items page
* Links in files security
* Added SDK Snippets to Schema page
* Added GQL Generic examples to snippet togglers and removed snippet toggler from Login Using SSO Providers
* Added create(s)Presets SDK Snippets to presets page
* replaced fields query in generics snippets for a more generic
* replaced fields query in generics snippets for a more generic
* Use storage value only if valid choice
* Sync snippet togglers across page
* Update docs/reference/system/activity.md
* Update docs/reference/system/activity.md
* Update docs/reference/system/extensions.md
* Update docs/reference/system/revisions.md
* Update docs/reference/system/settings.md
* Update docs/reference/system/revisions.md
* Update docs/reference/system/settings.md
* Update docs/reference/system/activity.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/schema.md
* Update docs/reference/system/server.md
* Update docs/reference/system/shares.md
* Replace all directus_project_url placeholders
* Revert "Sync snippet togglers across page"
This reverts commit 8b36f0d778.
* Update docs/reference/system/shares.md
* Update docs/reference/system/webhooks.md
* Clarify singleton section
* Consistent newlines between SnippetToggler templates
* Format files
* Remove console.log(result) statements from snippet
* Add examples for shares & users
Co-authored-by: Brainslug <tim@brainslug.nl>
* Fix hash GraphQL example
* Clarify update singleton section
* Add auth examples
Co-authored-by: Brainslug <tim@brainslug.nl>
* Final run on consistent newlines between SnippetToggler
* Switch to github themes
* The "Last One"
Co-authored-by: Brainslug <tim@brainslug.nl>
* The "Big One"
* Fix dead links
---------
Co-authored-by: Bevis Halsey-Perry <hi@be7.is>
Co-authored-by: Kevin Lewis <kvn@lws.io>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
7.8 KiB
description, readTime
| description | readTime |
|---|---|
| REST and GraphQL API documentation for filter rules in Directus. | 5 min read |
Filter Rules
Permissions, validation, and the API's
filterparameter all rely on a specific JSON structure to define their rules. This page describes the syntax for creating flat, relational, or complex filter rules.
Syntax
- Field — Any valid root field, relational field, or logical operator
- Operator — Any valid filter operator
- Value — Any valid static value, or dynamic variable
{
<field>: {
<operator>: <value>
}
}
Examples
{
"title": {
"_contains": "Directus"
}
}
{
"owner": {
"_eq": "$CURRENT_USER"
}
}
{
"datetime": {
"_lte": "$NOW"
}
}
{
"category": {
"_null": true
}
}
Filter Operators
| Operator Title (in app) | Operator | Description |
|---|---|---|
| Equals | _eq |
Equal to |
| Doesn't equal | _neq |
Not equal to |
| Less than | _lt |
Less than |
| Less than or equal to | _lte |
Less than or equal to |
| Greater than | _gt |
Greater than |
| Greater than or equal to | _gte |
Greater than or equal to |
| Is one of | _in |
Matches any of the values |
| Is not one of | _nin |
Doesn't match any of the values |
| Is null | _null |
Is null |
| Isn't null | _nnull |
Is not null |
| Contains | _contains |
Contains the substring |
| Contains (case-insensitive) | _icontains |
Contains the case-insensitive substring |
| Doesn't contain | _ncontains |
Doesn't contain the substring |
| Starts with | _starts_with |
Starts with |
| Starts with | _istarts_with |
Starts with, case-insensitive |
| Doesn't start with | _nstarts_with |
Doesn't start with |
| Doesn't start with | _nistarts_with |
Doesn't start with, case-insensitive |
| Ends with | _ends_with |
Ends with |
| Ends with | _iends_with |
Ends with, case-insensitive |
| Doesn't end with | _nends_with |
Doesn't end with |
| Doesn't end with | _niends_with |
Doesn't end with, case-insensitive |
| Is between | _between |
Is between two values (inclusive) |
| Isn't between | _nbetween |
Is not between two values (inclusive) |
| Is empty | _empty |
Is empty (null or falsy) |
| Isn't empty | _nempty |
Is not empty (null or falsy) |
| Intersects | _intersects [1] |
Value intersects a given point |
| Doesn't intersect | _nintersects [1] |
Value does not intersect a given point |
| Intersects Bounding box | _intersects_bbox [1] |
Value is in a bounding box |
| Doesn't intersect bounding box | _nintersects_bbox [1] |
Value is not in a bounding box |
The following operator has no Title on the Filter Interface as it is only available in validation permissions:
| Operator | Description |
|---|---|
_regex [2] |
Field has to match regex |
[1] Only available on Geometry types.
[2] JavaScript "flavor" regex. Make sure to escape backslashes.
Relational
You can target related values by nesting field names. For example, if you have a relational Many-to-One author field,
you can set a rule for the author.name field using the following syntax.
{
"author": {
"name": {
"_eq": "Rijk van Zanten"
}
}
}
When using M2M relationships, a junction table will be created and the filter applies to the junction table itself. For
example, if you have a books collection, with a M2M relationship to authors of each book, the junction collection will
probably be named books_authors and have 3 fields : id, books_id and authors_id. To filter specific books
depending on their authors you must go through the junction table and the authors_id field :
{
"authors": {
"authors_id": {
"name": {
"_eq": "Rijk van Zanten"
}
}
}
}
Logical Operators
You can nest or group multiple rules using the _and or _or logical operators. Each logical operator holds an array
of Filter Rules, allowing for more complex filtering. Also note in the example that Logical Operators can be sub-nested
into Logical Operators. However, they cannot be sub-nested into Filter Rules.
{
"_or": [
{
"_and": [
{
"user_created": {
"_eq": "$CURRENT_USER"
}
},
{
"status": {
"_in": ["published", "draft"]
}
}
]
},
{
"_and": [
{
"user_created": {
"_neq": "$CURRENT_USER"
}
},
{
"status": {
"_in": ["published"]
}
}
]
}
]
}
Some vs None in One-to-Many
When applying filters to a one-to-many field, Directus will default to a "some" search, for example in:
{
"categories": {
"name": {
"_eq": "Recipe"
}
}
}
the top level parent will be returned if one of the categories has the name Recipe. This behavior can be overridden
by using the explicit _some and _none operators, for example:
{
"categories": {
"_none": {
"name": {
"_eq": "Recipe"
}
}
}
}
will fetch all parent items that don't have the category "Recipe"
Dynamic Variables
In addition to static values, you can also filter against dynamic values using the following variables.
$CURRENT_USER— The primary key of the currently authenticated user$CURRENT_ROLE— The primary key of the role for the currently authenticated user$NOW— The current timestamp$NOW(<adjustment>)- The current timestamp plus/minus a given distance, for example$NOW(-1 year),$NOW(+2 hours)
::: tip Functions
You can also use Function Parameters when building Filters.
:::
::: tip Nested User / Role variables in Permissions
When configuring permissions, $CURRENT_USER and $CURRENT_ROLE allow you to specify any (nested) field under the
current user/role as well as the root ID. For example: $CURRENT_ROLE.name or $CURRENT_USER.avatar.filesize. This
includes custom fields that were added to the directus_users/directus_roles tables.
Note: This feature is available for permissions, validation, presets and conditional fields. Regular filters only support the root ID.
:::