Request
The SEER platform supports the following request methods:
GET- Used to retrieve data from the server.POST- Used to create new resources on the server.PUT- Used to update existing resources on the server.DELETE- Used to delete resources from the server.
When making requests to the SEER platform, the following headers should be included:
Authorization- The bearer token used for authentication.Content-Type- The type of data being sent in the request body.
Requests to the SEER platform may require additional parameters depending on the endpoint and operation being performed. These parameters should be included in the request URL or request body.
Authentication
you need to add request header { authorization : \bearer {{YOUR_TOKEN}}` }` before calling our service, Seer offers two type tokens:
- JWT : get through user login process, then can call out service endpoint with format https://{{base_url}}/{{target_endpoint}}
- API Key : provide by us, need to call endpoint with format https://{{base_url}}/api/call/{{target_endpoint}} Please contact the us for more information.
Query params
For pagination related API, we support these param names:
fields, select - get selected fields in GET result
s - search conditions ($and, $or with all possible variations)
filter - filter GET result by AND type of condition
or - filter GET result by OR type of condition
join - receive joined relational resources in GET result (with all or selected fields)
sort - sort GET result by some field in ASC | DESC order
per_page, limit - limit the amount of received resources
offset - offset some amount of received resources
page - receive a portion of limited amount of resources
cache - reset cache (if was enabled) and receive resources directly from the DB
Notice: You can easily map your own query params names and chose another string delimiters by applying global options.
Here is the description of each of those using default params names:
select
Selects fields that should be returned in the reponse body.
Syntax:
?fields=field1,field2,...
Example:
?fields=email,name
search
Adds a search condition as a JSON string to you request. You can combine $and, $or and use any condition you need. Make sure it's being sent encoded or just use RequestQueryBuilder
Syntax:
?s={"name": "Michael"}
Some examples:
- Search by field
namethat can be eithernullOR equalsSuperman
?s={"name": {"**$or**: {"**$isnull**: true, "**$eq**: "Superman"}}}
- Search an entity where
isActiveistrueANDcreatedAtnot equal2008-10-01T17:04:32
?s={"**$and**: [{"isActive": true}, {"createdAt": {"**$ne**: "2008-10-01T17:04:32"}}]}
...which is the same as:
?s={"isActive": true, "createdAt": {"**$ne**: "2008-10-01T17:04:32"}}
- Search an entity where
isActiveisfalseORupdatedAtis notnull
?s={"**$or**: [{"isActive": false}, {"updatedAt": {"**$notnull**: true}}]}
So the amount of combinations is really huge.
Notice: if search query param is present, then filter and or query params will be ignored.
filter conditions
$eq(=, equal)$ne(!=, not equal)$gt(>, greater than)$lt(<, lower that)$gte(>=, greater than or equal)$lte(<=, lower than or equal)$starts(LIKE val%, starts with)$ends(LIKE %val, ends with)$cont(LIKE %val%, contains)$excl(NOT LIKE %val%, not contains)$in(IN, in range, accepts multiple values)$notin(NOT IN, not in range, accepts multiple values)$isnull(IS NULL, is NULL, doesn't accept value)$notnull(IS NOT NULL, not NULL, doesn't accept value)$between(BETWEEN, between, accepts two values)$eqL(LOWER(field) =, equal)$neL(LOWER(field) !=, not equal)$startsL(LIKE|ILIKE val%)$endsL(LIKE|ILIKE %val, ends with)$contL(LIKE|ILIKE %val%, contains)$exclL(NOT LIKE|ILIKE %val%, not contains)$inL(LOWER(field) IN, in range, accepts multiple values)$notinL(LOWER(field) NOT IN, not in range, accepts multiple values)
filter
Adds fields request condition (multiple conditions) to your request.
Syntax:
?filter=field||$condition||value
?join=relation&filter=relation.field||$condition||value
Notice: Using nested filter shall join relation first.
Examples:
?filter=name||$eq||batman
?filter=isVillain||$eq||false&filter=city||$eq||Arkham (multiple filters are treated as a combination of
ANDtype of conditions)
?filter=shots||$in||12,26 (some conditions accept multiple values separated by commas)
?filter=power||$isnull (some conditions don't accept value)
or
Adds OR conditions to the request.
Syntax:
?or=field||$condition||value
It uses the same filter conditions.
Rules and examples:
- If there is only one
orpresent (withoutfilter) then it will be interpreted as simple filter:
?or=name||$eq||batman
- If there are multiple
orpresent (withoutfilter) then it will be interpreted as a compination ofORconditions, as follows:
WHERE {or} OR {or} OR ...
?or=name||$eq||batman&or=name||$eq||joker
- If there are one
orand onefilterthen it will be interpreted asORcondition, as follows:
WHERE {filter} OR {or}
?filter=name||$eq||batman&or=name||$eq||joker
- If present both
orandfilterin any amount (one or miltiple each) then both interpreted as a combitation ofANDconditions and compared with each other byORcondition, as follows:
WHERE ({filter} AND {filter} AND ...) OR ({or} AND {or} AND ...)
?filter=type||$eq||hero&filter=status||$eq||alive&or=type||$eq||villain&or=status||$eq||dead
sort
Adds sort by field (by multiple fields) and order to query result.
Syntax:
?sort=field,ASC|DESC
Examples:
?sort=name,ASC
?sort=name,ASC&sort=id,DESC
join
Receive joined relational objects in GET result (with all or selected fields). You can join as many relations as allowed in your CrudOptions.
Syntax:
?join=relation
?join=relation||field1,field2,...
?join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...&join=...
Examples:
?join=profile
?join=profile||firstName,email
?join=profile||firstName,email&join=notifications||content&join=tasks
?join=relation1&join=relation1.nested&join=relation1.nested.deepnested
Notice: primary field/column always persists in relational objects. To use nested relations, the parent level MUST be set before the child level like example above.
limit
Receive N amount of entities.
Syntax:
?limit=number
Example:
?limit=10
offset
Limit the amount of received resources
Syntax:
?offset=number
Example:
?offset=10
page
Receive a portion of limited amount of resources.
Syntax:
?page=number
Example:
?page=2
cache
Reset cache (if was enabled) and receive resources directly from the DB.
Usage:
?cache=0