Search Records
One of the operation of DATA-API is to list the records of a specific entity according to a specific condition.
In order to get a list of a specific entity, a POST request to /api/:entity_name/export.
The search accepts all the Stack9 Query Object to be passed through the request body
Example
For instance, let's say that we need to query all the customers who fit as Baby Boomers (generation X) that call John.
// NodeJS example
fetch('https://april9.stack9.co/api/customer/search', {
method: 'POST',
headers: {
'Api-Key': '<my_secret_api_key>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
$select: ['id', 'dob', 'name', 'account_type.name'],
$withRelated: ['account_type'],
$where: {
name: {
$like: '%John%',
},
dob: {
$lt: '1964-12-31',
$gt: '1946-01-01',
},
},
$sort: {
dob: -1,
},
}),
})
.then(response => response.json())
.then(data => {
const johnBoomers = data;
console.log(johnBoomers);
});
// OUTPUT
// [
// {
// id: 12,
// dob: '1963-06-02',
// name: 'John Doe',
// account_type: {
// name: 'Basic'
// },
// },
// {
// id: 13,
// dob: '1946-03-10',
// name: 'Silvester John',
// account_type: {
// name: 'Premium'
// },
// },
// ...
// ];
Also you can use GET parameters to create pagination or add a limit to the query results
| Params | Type | Description |
|---|---|---|
limit | number | The limit size for the query |
page | number | Page index that represents the offset of your pagination |
// NodeJS example
fetch('https://april9.stack9.co/api/customer/search?limit=2&page=0', {
method: 'POST',
headers: {
'Api-Key': '<my_secret_api_key>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
$where: {
gender: 'Male',
},
}),
})
.then(response => response.json())
.then(data => console.log(data));
// OUTPUT
// {
// results: [
// {
// id: 1,
// dob: '1990-06-01',
// name: 'John Doe'
// },
// {
// id: 2,
// dob: '1986-03-10',
// name: 'James Doe'
// },
// ],
// total: 10
// }
Using the total property, you can calculate how many pages are needed to paginate the records
const limit = 2;
const pagesNeeded = Math.round(data.total / limit);
console.log(pagesNeeded); // 5
Responses
| Status Code | Operation | Response |
|---|---|---|
200 | Resource listed successfully | Entity[] or {results: Entity[]} |
400 | Bad Request Error | { error: string } |
404 | Resource not found |