This guide explains how to access IOTFactory platform data via API.
You will learn how to:
Prerequisite: API access requires authentication and authorization.
⚠️ Important: Store this key securely. It is required for authentication.
To authenticate a user, use the following endpoint:
json
{
"email": "your@email.com",
"password": "your_password"
}
Success Response: A JSON object containing an authentication token in `res.data._id`.
Example:
json
{
"data": {
"_id": "your_authentication_token"
}
}
http Authorization: Bearer your_authentication_token
To log out, simply delete the stored token from your application.
This use case shows you the APIs you can use to obtain a list of all the assets in your account, obtain the details of an asset based on its identifier and retrieve data from connected devices.
List all assets for the currently logged-in user.
GET ASSETS https://report.iotfactory.eu/api/assets?fields=_id&fields=name
Request headers
For all authenticated requests, include the token in the HTTP header:
http Authorization: Bearer your_authentication_token
URL Variables
| path | type | presence | description | default | conforms | allowed | valids | invalids |
| — | — | — | — | — | — | — | — | — |
| \- | object | optional | ||||||
| status | string | optional | List only assets on this state | `“active”` | `“new”` `“active”` `“archived”` `“all”` | `““` | ||
| search | string | optional | Global search value | `”“` | ||||
| sort | string | optional | `”timestamp”` | `““` | ||||
| order | string | optional | `”desc”` | `“asc”` `“desc”` | `““` | |||
| page | number | optional | `0` | `null` `null` | ||||
| limit | number | optional | `100` | `null` `null` | ||||
| tags | array | optional | Filter on tags | `unique` | ||||
| tags \[+0 \] | string | optional | `”“` | |||||
| geoloc | boolean | optional | Only geolocalized assets | `false` | ||||
| mainAsset | string | optional | Geoloc filter: Filter on the asset it was in planning. Format: ids | `”“` | ||||
| site | string | optional | Geoloc filter: Filter on sites it was in planning. Format: ids | `”“` | ||||
| state | string | optional | Geoloc filter: Came from/Went to the site (only if a site was sent in the query) | `”“` | `”“` `”from”` `“to”` | |||
| withPlanningInputs | boolean | optional | `false` | |||||
| to | date | optional | Geoloc filter: Check in plannings a planning to that date | |||||
| from | alternatives | ignore | ||||||
| fields | array | optional | Return only referenced fields (useless when site is defined) | `unique` | ||||
| fields \[+0 \] | string | optional | `““` | |||||
| group | array | optional | filter: Came from/Went to the group (only if a group was sent in the query | `unique` | `”“` | |||
| lookup | boolean | optional | `false` | |||||
| onSite | boolean | optional |
Get one asset by ID
GET ASSET https://report.iotfactory.eu/api/assets/{id}
Request headers
For all authenticated requests, include the token in the HTTP header:
http Authorization: Bearer your_authentication_token
URL Params
| path | type | presence | description | invalids |
| — | — | — | — | — |
| \- | object | optional | ||
| id | string | required | Identifier of the asset | `”“` |
—
URL Variables
| path | type | presence | description | default |
| — | — | — | — | — |
| \- | object | optional | ||
| populateParents | boolean | optional | if true, 'parents' property will be added to the response | `false` |
GET ASSET https://report.iotfactory.eu/api/assets/{id}/measurements
URL Params
| path | type | presence | description | invalids |
| — | — | — | — | — |
| \- | object | optional | ||
| id | string | required | asset id | `”“` |
—
URL Variables
| path | type | presence | description | default | conforms | allowed | valids | invalids |
| — | — | — | — | — | — | — | — | — |
| \- | object | optional | ||||||
| before | date ISO8601 YYYY-MM-DDTHH:mm:ss.sssZ | optional | Return only measurements before this date | |||||
| after | date ISO8601 YYYY-MM-DDTHH:mm:ss.sssZ | optional | Return only measurements after this date | |||||
| page | number | optional | `0` | `null` `null` | ||||
| limit | number | optional | limit by measurements and smartmeasurements | `100` | `min: 0` | `null` `null` | ||
| type | array | optional | Select only measurements of this type | `unique` | `”“` | |||
| device | string | optional | Device id | `”“` | ||||
| tags | array | optional | Filter by (smart)devices tags | `unique` | `”“` | |||
| step | string | optional | By step | `”“` `”quarthourly”` `“hourly”` `“daily”` `“weekly”` `“monthly”` `“yearly”` | ||||
| merge | boolean | optional | Merge measurements of same timestamp |
Devices, smart devices or static lists can be attached to an asset. The identifiers of these objects can be found in the corresponding table of an asset.
Ex: Get the last ten weekly smart measurements of a smart devices (_id:6513e6769a0d12001268d169) attached to an asset(_id:6508132813019d0012630749) after the 16/11/2023 10pm UTC
https://report.iotfactory.eu/api/assets/6508132813019d0012630749/measurements?device=6513e6769a0d12001268d169&type=Occupied (first)&step=weekly&limit=10&after=2023-11-16T22:00:00.000Z
Result:
{
"data": [
{
"_id": "65aef1c2d6c621996407a92c",
"smartdevice": {
"id": "6513e6769a0d12001268d16c",
"team": "1ha4pei7n.hp",
"name": "Desk occupied"
},
"timestamp": 1705878000000,
"updatedAt": "2024-01-23T14:36:18.131Z",
"device": {},
"staticList": {},
"measurements": [
{
"type": "Occupied (first)",
"value": 0,
"before": 1705878000000,
"at": "2024-01-21T22:55:00.000Z",
"unit": "",
"cache": true
}
]
},
...
{
"_id": "6573242b70f14a87dbaf0079",
"smartdevice": {
"id": "6513e6769a0d12001268d16c",
"team": "1ha4pei7n.hp",
"name": "Desk occupied"
},
"timestamp": 1700434800000,
"updatedAt": "2023-12-08T14:14:35.531Z",
"device": {},
"staticList": {},
"measurements": [
{
"type": "Occupied (first)",
"value": 0,
"before": 1700434800000,
"at": "2023-11-19T22:55:00.000Z",
"unit": "",
"cache": false
}
]
}
],
"pages": 1,
"parent": {
"_id": "6508132813019d0012630743",
"name": "Anderlecht"
},
"recordsFiltered": 10
}