Advanced Services
The REST services strictly follows traditional rules for restful api. However, there are few cases which are difficult to achieve with pure REST.
The Axelor Open Platform provides some additional non-standard api for such cases:
Advanced Read
This is a specialized read
service besides the standard REST service to
partially read record.
The web service is accessible with following url pattern:
POST /ws/rest/:model/:id/fetch
POST /ws/rest/com.axelor.contact.db.Contact/1/fetch HTTP/1.1 Accept: application/json Content-Type: application/json
{
"fields": ["fullName"],
"related": {
"user": ["name", "email"],
"parent": ["fullName"]
}
}
{
"status": 0,
"data": [{
"id": 1,
"version": 1,
"fullName": "John Smith",
"user": {
"name": "j.smith",
"email": "j.smith@example.com",
"id": 123,
"version": 0
},
"parent": {
"fullName": "Thomas Smith",
"id": 12,
"version": 0
}
}]
}
Advanced Delete
This is a specialized delete
service besides the standard REST service to
delete records in bulk.
The web service is accessible with following url pattern:
POST /ws/rest/:model/removeAll
POST /ws/rest/com.axelor.contact.db.Contact/removeAll HTTP/1.1 Accept: application/json Content-Type: application/json
{
"records": [{
"id": 1,
"version": 1
}, {
"id": 2,
"version": 0
}]
}
{
"status": 0,
"data": [{
"id": 1,
"version": 1
}, {
"id": 2,
"version": 0
}]
}
Advanced Search
The advanced search service allows searching for records with advanced search criteria.
The web service is accessible with following url pattern:
POST /ws/rest/:model/search
Some examples:
POST /ws/rest/com.axelor.contact.db.Contact/search HTTP/1.1 Accept: application/json Content-Type: application/json
{
"offset": 0,
"limit": 10,
"fields": ["fullName", "email"],
"sortBy": ["fullName", "-createdOn"],
"data": {
"_domain": "self.email like :email",
"_domainContext": {
"email": "%gmail.com"
},
"_archived": true
}
}
The _domain
is a simple JPQL where
clause with self.
as object prefix.
The named parameter values can be provided with _domainContext
.
The _archived
can be used to search on archived records. By default, archived records are not returned.
POST /ws/rest/com.axelor.contact.db.Contact/search HTTP/1.1 Accept: application/json Content-Type: application/json
{
"offset": 0,
"limit": 10,
"fields": ["fullName", "email"],
"sortBy": ["fullName", "-createdOn"],
"data": {
"criteria": [{
"operator": "or",
"criteria": [{
"fieldName": "email",
"operator": "like",
"value": "%gmail.com"
}, {
"fieldName": "lang",
"operator": "=",
"value": "FR"
}, {
"fieldName": "age",
"operator": "between",
"value": 18,
"value2": 40
}, {
"operator": "and",
"criteria": [{
"fieldName": "firstName",
"operator": "like",
"value": "j%"
}, {
"fieldName": "lastName",
"operator": "like",
"value": "s%"
}]
}]
}]
}
}
You can see the criteria
can be nested, to create complex search filters:
Criteria has the following attributes:
Attribute | Meaning |
---|---|
|
matching operator (see bellow) |
|
list of criteria (for |
|
name of the field to check |
|
value to match |
|
second value for bounding check (for between, notBetween) |
Criteria operator
can be:
Operator | Meaning |
---|---|
|
|
|
|
|
negate the nested criteria list |
|
equal to |
|
not equal to |
|
greater than |
|
less than |
|
greater or equal to |
|
less or equal to |
|
search for values like |
|
search for values not like |
|
search in range |
|
search not in range |
|
search for null values |
|
search for non-null values |
In case of operator OR
, AND
and NOT
the other property criteria
is a
list of one or more criteria. It can be nested to create complex search filters.
Also, both _domain
and criteria
can be used for search.
{
"status": 0,
"offset": 0,
"total": 120,
"data": [{
"id": 1,
"fullName": "John Smith",
"email": "j.smith@gmail.com",
"version": 1
}, {
"id": 9,
"fullName": "Tom Boy",
"email": "tom.boy@gmail.com",
"version": 0
}, "..."]
}
Action Service
The action service allows executing one or more actions.
The web service is accessible with following url pattern:
POST /ws/action/
Some examples:
POST /ws/action HTTP/1.1 Accept: application/json Content-Type: application/json
{
"action": "check-order-dates,com.axelor.sale.web.SaleOrderController:calculate",
"data": {
"context": {
"id": 1,
...
},
}
}
The action
can be single or list of comma-separated actions. An action can be either
an xml action or a method call.
{
"status": 0,
"data": [
{ ... },
{ ... }
]
}
The result of the actions are returned as data array.