Error condition
unsupported-operator
The operator is part of the language but not of this endpoint's profiles.
- Type URI
https://openpredicate.tech/problems/unsupported-operator- HTTP status
400 Bad Request- Defined in
- Specification §8
What it means
The operator exists in the grammar and is spelled correctly, but this endpoint does not
serve it. No implementation is expected to serve all of them: a key-value store cannot
implement $exists, and a backend with LIKE but no POSITION
can serve $like and not $contains.
What a client does about it
Read the endpoint's advertised profiles and stay inside them. A generated filter schema omits what the server declined, so the client learns this from validation instead of from a 400.
What a server should send
Name the profiles it does advertise, so the client can narrow without a second round trip.
{
"type": "https://openpredicate.tech/problems/unsupported-operator",
"title": "Unsupported operator",
"status": 400,
"detail": "$regex is not in this endpoint's advertised profiles (core, strings).",
"pointer": "/filter/$and/1/name/$regex",
"profiles": [
"core",
"strings"
]
}The wire format is the API's own. The specification mandates the condition, not this envelope: an API with an established error format should express the condition in it rather than carry a second format for one endpoint. The member names above are the recommended ones.
The other conditions
malformed-query— The body does not conform to the grammar.unknown-field— The path is well-formed but this endpoint does not expose it.invalid-operand— The operator is supported but the operand is not usable.query-too-complex— A safety limit was exceeded.