OpenTV ENTera & OpenTV Platform Documentation
25.52_Q4 25.26_Q2 25.12_Q1 24.50_Q4 24.38_Q3 24.26_Q2 23.50_Q4 23.24_Q2 23.12_Q1 22.50_Q4 22.38_Q3 22.24_Q2
25.52_Q4 25.26_Q2 25.12_Q1 24.50_Q4 24.38_Q3 24.26_Q2 23.50_Q4 23.24_Q2 23.12_Q1 22.50_Q4 22.38_Q3 22.24_Q2

API Syntax 101

The query syntax for metadata server follows a client directed query methodology, whereby the consumer of the API provides a detailed specification of the query it wants to execute rather than adhering to a very strict REST template. This provides flexibility to the client but puts a lot of responsibility on the client developer to write efficient queries.

Query document

MDS uses the idea of a query document to specify queries, rather than a more traditional key-value filter or DQL (e.g. SQL) format. The query documents are JSON format and are provided in the filter parameter of an API request.

Equality

Simple equality is expressed through query-by-example semantics; for example, to get the object with id "1234-5678":

?filter={"id": "1234-5678"}

Sub-object reference

If the API being queried supports sub-objects, you can reference the fields of the sub-object using simple dot notation:

?filter={"editorial.id": "1234-5678"}

Conjunction (AND)

A comma-list of conditions is naturally joined as an AND:

?filter={"editorial.id": "1234", "technical.id": "5678"}

For much more complex queries, you can explicitly write this with an $and:

?filter={"$and": [{"editorial.id": "1234"}, {"technical.id": "5678"}]}

Disjunction (OR)

Similar to $and:

?filter={"$or": [{"editorial.id": "1234"}, {"technical.id": "5678"}]}

Negation (NOT)

To apply an inverse condition:

?filter={$ne": {"editorial.id": "1234-5678"}}

Ranges

Greater than ($gt), less than ($lt), greater than or equal to ($gte), and less than or equal to ($lte), can be applied as follows:

?filter={"period.start": {"$gte": 1000, "$lt": 2000}}

In

Allows you to match on a set of values:

?filter={"editorial.id": {"$in": ["1234", "5678"]}

Exists

Returns if a field exists (or not):

?filter={"editorial.id": {"$exists": true}}