Filtering
Some APIs, specifically those that return multiple search results, support filtering.
Syntax
The filter syntax is similar to SCIM/RFC7644 but with some small changes:
- Attribute names are case sensitive
- "Complex attribute filter grouping" is not supported
- Not all attributes are seachable, while some hidden attributes may be searchable. Please complain when you find these issues.
The filter is given with a filter parameter, such as:
filter=username Eq "john"
Operators
Supported operators are as listed in RFC7644:
Operator | Description | Notes |
---|---|---|
eq | equal | The attribute and operator values must be identical for a match. This can be used also to search from an array, for example if the parameter's value is an array of strings |
ne | not equal | |
co | contains | The entire operator value must be a substring of the attribute value for a match. |
sw | starts with | |
ew | end with | |
pr | present (has value) | |
gt | greater than | |
ge | greater than or equal to | |
lt | less than | |
le | less than or equal to |
Attribute operator | Description | Behavior |
---|---|---|
and | Logical "and" | The filter is only a match if both expressions evaluate to true. |
or | Logical "or" | The filter is a match if either expression evaluates to true. |
not | "Not" function | The filter is a match if the expression evaluates to false. |
Logical operator | Description | Behavior |
---|---|---|
( ) | Precedence grouping | |
Complex attribute filter grouping is Not Supported™ |
DateTime filtering
Filter expressions where the value is a string in double quotes and can be parsed as an ISO Instant string, are used as DateTime filters. For example:
Examples
filter=createdDate gt "2017-10-20T07:17:17.606Z"
filter=lastModifiedDate le "2019-05-31T23:59:59.999Z"