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.

application/problem+json
{
  "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