Query constraints

Motivation

In API operations which return the list of objects, the API must provide a way to apply constraints: filter, order, etc.

Functional Design

Support basic Parse API request syntax in the API.

Supported constraints:

  • order (string) - order by field

  • limit (int) - limit number of records

  • skip (int) skip number of records

  • include (string) - include referenced objects and/or containers

  • keys (string) - select only some field(s). Use quotes for fields with dots in the name, e.g. keys="sys.ID",name

  • where (object) - filter records

Example

Request

curl -X GET \
-H "AccessToken: ${ACCESS_TOKEN}"
--data-urlencode 'order=name'
--data-urlencode 'limit=10'
--data-urlencode 'skip=30'
--data-urlencode 'include=department.group,article_prices'  #include both department and group; include article_prices container
--data-urlencode 'keys="sys.ID",name,department.name,department.group.name' #select only some fields
--data-urlencode 'where={"id_department":123456,"number":{"$gte": 100, "$lte": 200}}'

  https://air.untill.com/api/v2/apps/untill/airs-bp/workspaces/140737488486431/cdocs/untill.articles

Response

{
    "results": [
        {
            "sys.ID": 123,
            "name": "Coca-Cola 0.5l",
            "department": {
                "name": "Fresh Drinks",
                "group": {
                    "name": "Drinks"
                }
            },
            "article_prices": [
                {
                    "sys.ID": 125,
                    "price": 1.5,
                    "currency": "EUR"
                }
            ]
        },
        {
            "sys.ID": 124,
            "name": "Fanta 0.5l",
            "department": {
                "name": "Fresh Drinks",
                "group": {
                    "name": "Drinks"
                }
            },
            "article_prices": [
                {
                    "sys.ID": 126,
                    "price": 1.4,
                    "currency": "EUR"
                }
            ]
        }
    ]

}

Include

  • the include parameter expects comma-separated list, where each entry is either:

    • the name of the pointer field

    • the name of the cotainer

  • the names can be nested, e.g. include=department.group,article_prices

Technical Design

Rows are filtered by Rows Processor component of the Query Processor.

Misc

Parse API multi-level inclding:

curl -X GET \
  -H "X-Parse-Application-Id: ${APPLICATION_ID}" \
  -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
  -G \
  --data-urlencode 'order=-createdAt' \
  --data-urlencode 'limit=10' \
  --data-urlencode 'include=post.author' \
  https://YOUR.PARSE-SERVER.HERE/parse/classes/Comment

See Also

Last updated

Was this helpful?