Introduction
The base URL for all the requests in this reference is:
https://cloud.moeco.io/api/ext/v1/
Welcome to the Moeco public API! You can use our API to access Moeco API endpoints, which can get information on your shipments, sensors, alerts, and more.
We currently offer code examples in cURL and JavaScript. You can view them in the dark area to the right.
Authentication
General
Include your API key into each request. For example:
curl -X 'GET'
'https://cloud.moeco.io/api/ext/v1/shipments' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require(‘axios’);
async function main() {
const options = {
method: ‘get’,
url: `https://cloud.moeco.io/api/ext/v1/shipments`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
};
const response = await axios(options);
console.log(response.data)
}
main();
Make sure to replace
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
with your API key.
To interact with our API, you need to obtain an API key. To do this, please refer to the platform documentation.
This API key must be sent with each request as a header. Any requests that don't contain an API key will fail. Add an API key to your requests like this:
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"-H 'accept: application/json'
API (bearer) token authentication
curl -X 'POST' 'https://cloud.moeco.io/api/ext/v1/auth' \
--data '{"email":"[email protected]","password":"yourpassword"}' \
--header "Content-Type: application/json"
const axios = require('axios');
async function main() {
const options = {
method: 'POST',
url: `https://cloud.moeco.io/api/ext/v1/auth`,
data: {
email: "[email protected]",
password: "yourpassword"
}
};
const response = await axios(options);
console.log(response.data)
}
main();
Make sure to replace
[email protected]
andyourpassword
with your Moeco platform credentialsAs a successful result, you get the following response:
{
"data": [
{
"id": 1203903,
"token_type": "bearer",
"user_id": 10,
"expires_at": "2022-03-06T06:09:51.030Z",
"created_at": "2022-02-04T06:09:51.030Z",
"updated_at": "2022-02-04T06:09:51.030Z",
"access_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"organization_id": 3,
"ip_address": null
}
],
"meta": {
"total": 0,
"count": 1,
"offset": 0,
"error": null
}
}
Include obtained API token into each request. For example:
curl -X 'GET'
'https://cloud.moeco.io/api/ext/v1/shipments' \
-H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require(‘axios’);
async function main() {
const options = {
method: ‘get’,
url: `https://cloud.moeco.io/api/ext/v1/shipments`,
headers: {
authorization: `Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
};
const response = await axios(options);
console.log(response.data)
}
main();
API token authentication has been deprecated since we added API key management to the platform. Please use API key authentication instead.
To get your API token, call auth
endpoint with parameters listed below. As a successful response, you will receive a JSON which contains your API token in access_token
. Use it further in all your requests to Moeco API as a header.
Parameter | Format | Description |
---|---|---|
email |
string | Mandatory. Your email for logging into the Moeco platform. |
password |
string | Mandatory. Your password for logging into the Moeco platform. |
organization_id |
integer | Unique identifier of the organization. Must be set if a user belongs to more than one organization. |
Keeping your API key / token safe
Once you obtained your API key / token, store it safe. It is tied closely with your identity and authorization and can be used to interact with Moeco on your behalf. If your key / token is compromised, whoever can access your data and make requests to Moeco endpoints. After you obtain an API key / token from our platform, you are fully responsible for its safety.
Below you can find general best practices on how to protect your token from compromizing:
- Don't store your access key / token in the source code as plain text. Instead, use environment variables, employ a dedicated mechanism for storing secrets, or use a configuration file that is exсluded from your version control system.
- Track your keys / tokens lifecycle. Immediately revoke keys / tokens that might have been compromised or those you don't use. While your key / token is active, limit the amount of people and systems who can access it.
Pagination
When making requests on collections of objects, the number of results returned defaults to the maximum, which is 100. This means that without using pagination to iterate through your collections, you will only ever access the first 100 objects. The offset
and count
parameters allow you to navigate through data sets.
Each request with the method that includes pagination returns meta information in response. The meta information object contains the following parameters.
Parameter | Format | Description |
---|---|---|
total |
integer | The total number of records that meet the request requirements. |
count |
integer | The number of records returned in this response (default is 100, maximum is 100). |
offset |
integer | The offset from which your requested data begin (default is 0). |
error |
string | Default is null . |
Date format
Moeco API uses normalized UTC values for all date
type parameters both in requests and responses. The hours component must be or is specified as two digits in 24-hour format.
Valid date formats for requests are:
YYYY
YYYY-MM
YYYY-MM-DD
YYYY-MM-DDTHH
Shipments
Get shipments
Retrieve array of shipments. Shipment is an entity that includes one or several sensors.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments?count=100&offset=0&filters=created:2021-10-28,show_archived:1' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require(‘axios’);
async function main() {
const options = {
method: ‘get’,
url: `https://cloud.moeco.io/api/ext/v1/shipments`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 10,
offset: 0,
filters: ‘created: 2021-10-28, show_archived: 1’,
order: ‘id: desc’
}
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 3862,
"shipment_name": "MOECO_8190638195",
"created_at": "2022-07-26T10:57:04.280Z",
"last_seen": "2022-07-26T11:00:13.000Z",
"start_point": {
"lt": 37.78443,
"lg": -122.39435,
"address": "QJJ2+8H2 SoMa, San Francisco, CA, USA",
"accuracy": 1000
},
"last_known_location": {
"lt": 37.323082,
"lg": -121.88999,
"address": "84G6+9QP San Jose, CA, USA",
"accuracy": 1000
},
"destination": {
"lt": 46.6242142,
"lg": -75.923839,
"address": "Magdeburg, Germany"
},
"current_stage": "Delivered",
"alert_events_max_severity": "Alert"
}
],
"meta": {
"total": 1,
"count": 1,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments
Request parameters
All the parameters listed for this request are optional. If your request doesn't contain any of these parameters, it retrieves an array of activated shipments for your organization.
Parameter | Format | Description |
---|---|---|
count |
integer | |
offset |
integer | |
order |
string | <order_name>: <value> . Each request must contain only one order option. Possible order names:
|
filters |
string | <filter_name>: <value>, <filter_name>: <value>, ... Possible filter names:
|
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of this shipment. |
shipment_name |
string | Unique name of this shipment. |
created_at |
date | Shipment creation time. |
last_seen |
date | Shipment last transaction date. |
start_point |
object | Contains information about location from where this shipment first transaction was received. |
start_point.name |
string | City and region of this shipment first received transaction. |
start_point.lt |
float | Latitude of this shipment first received transaction. |
start_point.lg |
float | Longitude of this shipment first received transaction. |
start_point.address |
string | Address of this shipment first received transaction. |
start_point.accuracy |
integer | Geolocation accuracy of this shipment first received transaction. |
last_known_location |
object | Contains information about last known location of this shipment. |
last_known_location.name |
string | City and region from where this shipment last transaction was received. |
last_known_location.lt |
float | Latitude of this shipment last received transaction. |
last_known_location.lg |
float | Longitude of this shipment last received transaction. |
last_known_location.address |
string | Address of this shipment last received transaction. |
last_known_location.accuracy |
integer | Geolocation accuracy of this shipment last received transaction. |
destination |
object | Contains information about this shipment final destination point. |
destination.lt |
float | Latitude of the place where this shipment must arrive. |
destination.lg |
float | Longitude of the place where this shipment must arrive. |
destination.address |
string | Address of the place where this shipment must arrive. |
current_stage |
string | Current delivery status of this shipment. |
alert_events_max_severity |
string | Monitoring event of the most severity triggered for this shipment. |
Get a specific shipment
Retrieve information about a specific shipment by its ID.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/7490' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/7490`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 56,
"shipment_name": "MOECO_0291208178",
"created_at": "2022-04-21T09:01:33.767Z",
"last_seen": null,
"current_stage": "New",
"alert_events_max_severity": "None",
"properties": [
{
"value": "PX-367321",
"name": "Pallet ID"
},
{
"value": "CNT1243",
"name": "Container ID"
}
],
"tags": [
"tag1",
"tag2",
"tag3"
],
"start_point": {
"lt": null,
"lg": null,
"address": null,
"accuracy": null
},
"last_known_location": {
"lt": null,
"lg": null,
"address": null,
"accuracy": null
},
"destination": {
"lt": 46.6242142,
"lg": -75.923839,
"address": "Magdeburg, Germany"
}
}
],
"meta": {
"total": 1,
"count": 1,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/{shipment_id}
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of this shipment. |
shipment_name |
string | Unique name of this shipment. |
created_at |
date | Shipment creation time. |
last_seen |
date | Shipment last transaction date. |
current_stage |
string | Current delivery status of this shipment. |
alert_events_max_severity |
string | Monitoring event of the most severity triggered for this shipment. |
properties |
array | Properties assigned to this shipment. |
properties.name |
string | Name of this property. |
properties.value |
string | Value of this property. |
tags |
array | Name of the tag. |
start_point |
object | Contains information about location from where this shipment first transaction was received. |
start_point.lt |
float | Latitude of this shipment first received transaction. |
start_point.lg |
float | Longitude of this shipment first received transaction. |
start_point.address |
string | Address of this shipment first received transaction. |
start_point.accuracy |
integer | Geolocation accuracy of this shipment first transaction. |
last_known_location |
object | Contains information about last known location of this shipment. |
last_known_location.lt |
float | Latitude of this shipment last received transaction. |
last_known_location.lg |
float | Longitude of this shipment last received transaction. |
last_known_location.address |
string | Address of this shipment last received transaction. |
last_known_location.accuracy |
integer | Geolocation accuracy of this shipment last received transaction. |
destination |
object | Contains information about this shipment final destination point. |
destination.lt |
float | Latitude of this shipment final destination point. |
destination.lg |
float | Longitude of this shipment final destination point. |
destination.address |
string | Address of this shipment final destination point. |
Get tracking points of a specific shipment
Retrieve tracking points for all sensors in a specific shipment.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/7813/track' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/7490/track`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"package_id": 7153,
"trackpoint_index": "0",
"timeframe": {
"start_time": "2022-07-14T13:28:28.000Z",
"end_time": "2022-07-14T13:33:30.000Z"
},
"accuracy": 1000,
"address": "Seligenstadt, Germany",
"lt": 50.045658,
"lg": 8.929076,
"sensors_data": {
{
"battery": {
"unit": "%",
"min": 93,
"max": 93,
"avg": 93
},
"Temp": {
"unit": "°C",
"min": 21,
"max": 21,
"avg": 21
},
"Humi": {
"unit": "%",
"min": 54,
"max": 55,
"avg": 54.5
},
"Light": {
"unit": null,
"min": 58,
"max": 59,
"avg": 58.5
},
"Shocks": {
"unit": null,
"min": 0,
"max": 0,
"avg": 0
}
}
},
{
"package_id": 7153,
"trackpoint_index": "1",
"timeframe": {
"start_time": "2022-08-14T13:28:28.000Z",
"end_time": "2022-08-14T13:33:30.000Z"
},
"accuracy": 1000,
"address": "Seligenstadt, Germany",
"lt": 50.034658,
"lg": 8.329076,
"sensors_data": {
{
"battery": {
"unit": "%",
"min": 93,
"max": 93,
"avg": 93
},
"Temp": {
"unit": "°C",
"min": 21,
"max": 21,
"avg": 21
},
"Humi": {
"unit": "%",
"min": 54,
"max": 55,
"avg": 54.5
},
"Light": {
"unit": null,
"min": 58,
"max": 59,
"avg": 58.5
},
"Shocks": {
"unit": null,
"min": 0,
"max": 0,
"avg": 0
}
}
}
],
"meta": {
"total": 2,
"count": 2,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/{shipment_id}/track
Response parameters
Parameter | Format | Description |
---|---|---|
package_id |
integer | Unique identifier of this package. |
trackpoint_index |
integer | Sequential number of this shipment tracking point. |
timeframe |
object | Contains information about date and time of the first and last transactions in the tracking point. |
timeframe.start_time |
date | Date and time of the first transaction received in this tracking point. |
timeframe.end_time |
date | Date and time of the last transaction received in this tracking point. |
accuracy |
integer | Geolocation accuracy of this shipment tracking point. |
address |
string | Address of this shipment tracking point. |
lt |
float | Latitude of this shipment tracking point. |
lg |
float | Longitude of this shipment tracking point. |
sensors_data |
object | Contains data received from the sensor when it reached this tracking point. Set of parameters listed in this object differs in each case and depends on the sensor type and user's custom parameters |
sensors_data.battery |
object | Contains information about the sensor battery on this tracking point. |
sensors_data.battery.unit |
string | The battery level measurement unit. |
sensors_data.battery.min |
integer | The minimum level of the sensor battery on this tracking point. |
sensors_data.battery.max |
integer | The maximum level of the sensor battery on this tracking point. |
sensors_data.battery.avg |
integer | The average level of the sensor battery on this tracking point. |
sensors_data.Temp |
object | Contains information about the temperature on this tracking point. |
sensors_data.Humi |
object | Contains information about the humidity level on this tracking point. |
sensors_data.Light |
object | Contains information about the light level on this tracking point. |
sensors_data.Shocks |
object | Contains information about the shocks on this tracking point. |
Get content structure of a specific shipment
Retrieve all child packages of a specific shipment. Package is an entity that can represent either a whole shipment or one of its children.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/6980/branches?count=10&offset=0' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/6980/branches`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 10,
offset: 0,
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"id": 6981,
"parent_id": 6980,
"merger_id": null,
"created_at": "2021-10-05T16:50:43.169Z",
"terminated_at": null,
"sensors": [
"jv:50:9e:e6:78:bf"
]
},
{
"id": 6980,
"parent_id": null,
"merger_id": null,
"created_at": "2021-10-05T16:50:41.922Z",
"terminated_at": null,
"sensors": [
"jv:50:9e:e6:78:bf"
]
}
],
"meta": {
"total": 2,
"count": 100,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/{shipment_id}/branches
Request parameters
Parameter | Format |
---|---|
count |
integer |
offset |
integer |
Response parameters
Parameter | Format | Description |
---|---|---|
id |
integer | Unique identifier of this package. |
parent_id |
integer | Identifier of a parent package. |
merger_id |
integer | Currently null . |
created_at |
date | Creation date of this package. |
terminated_at |
date | Currently null . |
sensors |
array | UID of the devices that belong to this branch and all its children. |
Get lifecycle of a specific shipment
Retrieve the history of stages for a specific shipment. A stage is an entity that represents a shipment lifecycle status, for example, New, Delivered, etc.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/7761/stage?count=10&offset=0' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/7761/stages`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 10,
offset: 0,
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"stage": "New",
"timestamp": "2021-11-01T14:12:58.348Z",
"time_on_stage": 164
},
{
"stage": "Canceled",
"timestamp": "2021-11-01T14:15:42.566Z",
"time_on_stage": 0
}
],
"meta": {
"total": 2,
"count": 2,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/{shipment_id}/stages
Request parameters
Parameter | Format |
---|---|
count |
integer |
offset |
integer |
Response parameters
Parameter | Format | Description |
---|---|---|
stage |
string | Lifecycle status of this shipment. |
timestamp |
date | Date when the shipment got this status. |
time_on_stage |
integer | The time the shipment spent in this status until reaching the next status (in seconds). |
Sensors
Get sensors
Retrieve array of sensors for all shipments.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/sensors?order=sensor_uid:desc&count=100&filters=sensor_uid:jv:7c:b8:00:79:4d' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/sensors`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 100,
offset: 0,
order: 'id: desc',
filters: 'sensor_uid: jv:7c:b8:00:79:4d',
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 2762,
"shipment_name": "MOECO_DT891013555",
"sensor_uid": "jv:7c:b8:00:79:4d",
"alert_events_max_severity": "None",
"last_seen": "2021-12-07T17:17:56.000Z",
"last_known_location": {
"address": "Seligenstadt, Germany",
"lt": 50.045658,
"lg": 8.929076,
"accuracy": null
},
"last_known_parameters": {
"battery": {
"unit": "%",
"value": 95
},
"Temp": {
"unit": "°C",
"value": 21
},
"Humi": {
"unit": "%",
"value": 0
},
"Light": {
"unit": null,
"value": 0
},
"Shocks": {
"unit": null,
"value": 0
}
}
}
],
"meta": {
"total": 1,
"count": 1,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/sensors
Request parameters
Parameter | Format | Description |
---|---|---|
count |
integer | |
offset |
integer | |
order |
string | <order_name>: <value> . Possible order name:
|
filters |
string | <filter_name>: <value>, <filter_name>: <value>, ... Possible filter names:
|
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of the shipment this sensor belongs to. |
shipment_name |
string | Unique name of the shipment this sensor belongs to. |
sensor_uid |
string | This sensor unique identifier. |
alert_events_max_severity |
string | Monitoring event of the most severity triggered for this sensor. |
last_seen |
date | This sensor last transaction date. |
last_known_location |
object | Contains information about last known location of this sensor. |
last_known_location.address |
string | Address from where this sensor last transaction was received. |
last_known_location.lt |
float | Latitude of this sensor last received transaction. |
last_known_location.lg |
float | Longitude of this sensor last received transaction. |
last_known_location.accuracy |
integer | Geolocation accuracy of this sensor last received transaction. |
last_known_parameters |
object | Contains information about this sensor last received parameters. Set of parameters listed in this object differs in each case and depends on the sensor type and user's custom parameters. |
last_known_parameters.battery |
object | Contains information about this sensor battery. |
last_known_parameters.battery.unit |
string | The battery level measurement unit. |
last_known_parameters.battery.value |
integer | The battery level value. |
last_known_parameters.Temp |
object | Contains information about this sensor temperature. |
last_known_parameters.Humi |
object | Contains information about this sensor humidity level. |
last_known_parameters.Light |
object | Contains information about this sensor light level. |
last_known_parameters.Shocks |
object | Contains information about the number of shocks of this sensor. |
Get a specific sensor
Retrieve information about a specific sensor by its ID.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/sensors/jv:7c:b8:00:79:4d?count=100&offset=0&filters=shipment:7773' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/sensors/jv:7c:b8:00:79:4d`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 100,
offset: 0,
filters: 'shipment:7773',
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 7773,
"shipment_name": "MOECO_DT891013555",
"shipment_created_at": "2021-12-07T17:17:47.725Z",
"sensor_last_seen": "2021-12-07T17:17:56.000Z",
"sensor_current_stage": "New",
"sensor_alert_events_max_severity": "None",
"properties": [
{
"name": "Pallet ID",
"value": "DT8910135794"
},
{
"name": "Pallet ID",
"value": "DT8910135794"
}
],
"last_known_location": {
"address": "Seligenstadt, Germany",
"lt": 50.045658,
"lg": 8.929076,
"accuracy": 1000
}
}
],
"meta": {
"total": 1,
"count": 1,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/sensors/{sensor_uid}
Request parameters
Parameter | Format | Description |
---|---|---|
count |
integer | |
offset |
integer | |
filters |
string | <filter_name>: <value> Possible filter name:
|
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of the shipment this sensor belongs to. |
shipment_name |
string | Unique name of the shipment this sensor belongs to. |
shipment_created_at |
date | Creation time of the shipment this sensor belongs to. |
sensor_last_seen |
date | Date of this sensor last received transaction. |
sensor_current_stage |
string | Current lifecycle status of this sensor. |
sensor_alert_events_max_severity |
string | Monitoring event of the most severity triggered for this sensor. |
properties |
array | Tags assigned to this sensor and a shipment it belongs to. |
properties.name |
string | Name of this property. |
properties.value |
string | Value of this property. |
last_known_location |
object | Contains information about last known location of this sensor. |
last_known_location.address |
string | Address from where this sensor last transaction was received. |
last_known_location.lt |
float | Latitude of this sensor last received transaction. |
last_known_location.lg |
float | Longitude of this sensor last received transaction. |
last_known_location.accuracy |
integer | Geolocation accuracy of this sensor last received transaction. |
Get lifecycle of a specific sensor
Retrieve the history of stages for a specific sensor. A stage is an entity that represents a shipment lifecycle status, for example, New, Delivered, etc.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/sensors/jv:7c:b8:00:79:4d/stages?count=100&offset=0&filters=shipment:7769' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/sensors/jv:7c:b8:00:79:4d/stages`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 100,
offset: 0,
filters: 'shipment:7769',
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 7769,
"stage": "New",
"timestamp": "2021-11-02T08:11:05.535Z",
"time_on_stage": 202
},
{
"shipment_id": 7769,
"stage": "Canceled",
"timestamp": "2021-11-02T08:14:27.449Z",
"time_on_stage": 0
}
],
"meta": {
"total": 2,
"count": 2,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/sensors/{sensor_uid}/stages
Request parameters
Parameter | Format | Description |
---|---|---|
count |
integer | |
offset |
integer | |
filters |
string | <filter_name>: <value> Possible filter name:
|
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of the shipment this sensor belongs to. |
stage |
string | Lifecycle status of this sensor. |
timestamp |
date | Date when the sensor got this status. |
time_on_stage |
integer | The time the sensor spent in this status until reaching the next status (in seconds). |
Get tracking information for a specific sensor
Retrieve tracking points for a specific sensor.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/sensors/b0:3b:a1:78:42:a9/track?order=timestamp:desc&count=10&offset=0' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/sensors/b0:3b:a1:78:42:a9/track`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 100,
offset: 0,
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 7152,
"trackpoint_index": "0",
"timeframe": {
"start_time": "2022-07-14T13:28:28.000Z",
"end_time": "2022-07-14T13:33:30.000Z"
},
"accuracy": 1000,
"address": "Seligenstadt, Germany",
"lt": 50.045658,
"lg": 8.929076,
"sensors_data": {
{
"battery": {
"unit": "%",
"min": 93,
"max": 93,
"avg": 93
},
"Temp": {
"unit": "°C",
"min": 21,
"max": 21,
"avg": 21
},
"Humi": {
"unit": "%",
"min": 54,
"max": 55,
"avg": 54.5
},
"Light": {
"unit": null,
"min": 58,
"max": 59,
"avg": 58.5
},
"Shocks": {
"unit": null,
"min": 0,
"max": 0,
"avg": 0
}
}
},
{
"package_id": 7152,
"trackpoint_index": "1",
"timeframe": {
"start_time": "2022-08-14T13:28:28.000Z",
"end_time": "2022-08-14T13:33:30.000Z"
},
"accuracy": 1000,
"address": "Seligenstadt, Germany",
"lt": 50.034658,
"lg": 8.329076,
"sensors_data": {
{
"battery": {
"unit": "%",
"min": 93,
"max": 93,
"avg": 93
},
"Temp": {
"unit": "°C",
"min": 21,
"max": 21,
"avg": 21
},
"Humi": {
"unit": "%",
"min": 54,
"max": 55,
"avg": 54.5
},
"Light": {
"unit": null,
"min": 58,
"max": 59,
"avg": 58.5
},
"Shocks": {
"unit": null,
"min": 0,
"max": 0,
"avg": 0
}
}
}
],
"meta": {
"total": 2,
"count": 2,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/sensors/{sensor_uid}/track
Request parameters
Parameter | Format | Description |
---|---|---|
count |
integer | |
offset |
integer | |
order |
string | <order_name>: <value> Possible order name:
|
filters |
string | <filter_name>: <value>, <filter_name>: <value>, ... Possible filter names:
|
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of the shipment this sensor belongs to. |
trackpoint_index |
integer | Sequential number of this shipment tracking point. |
timeframe |
object | Contains information about date and time of the first and last transactions in the tracking point. |
timeframe.start_time |
date | Date and time of the first transaction received in this tracking point. |
timeframe.end_time |
date | Date and time of the last transaction received in this tracking point. |
accuracy |
integer | Geolocation accuracy of this shipment tracking point. |
address |
string | Address of this shipment tracking point. |
lt |
float | Latitude of this shipment tracking point. |
lg |
float | Longitude of this shipment tracking point. |
sensors_data |
object | Contains data received from the sensor when it reached this tracking point. Set of parameters listed in this object differs in each case and depends on the sensor type and user's custom parameters |
sensors_data.battery |
object | Contains information about the sensor battery on this tracking point. |
sensors_data.battery.unit |
string | The battery level measurement unit. |
sensors_data.battery.min |
integer | The minimum level of the sensor battery on this tracking point. |
sensors_data.battery.max |
integer | The maximum level of the sensor battery on this tracking point. |
sensors_data.battery.avg |
integer | The average level of the sensor battery on this tracking point. |
sensors_data.Temp |
object | Contains information about the temperature on this tracking point. |
sensors_data.Humi |
object | Contains information about the humidity level on this tracking point. |
sensors_data.Light |
object | Contains information about the light level on this tracking point. |
sensors_data.Shocks |
object | Contains information about the shocks on this tracking point. |
Get transactions for a specific sensor
Retrieve an array of transactions which a specific sensor send to the platform. Transaction is a set of data that sensor collects and sends from one of the points along its route.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/sensors/b0:3b:a1:78:42:a9/transactions?order=timestamp:desc&count=10&offset=0' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/sensors/b0:3b:a1:78:42:a9/transactions`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 100,
offset: 0,
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 7152,
"seq_number": 0,
"timestamp": "2022-06-03T06:30:38.000Z",
"received_at": "2022-06-03T06:32:18.000Z",
"address": "Seligenstadt, Germany",
"lt": 50.045658,
"lg": 8.929076,
"raw_address": "Seligenstadt, Germany",
"raw_lt": 50.054512,
"raw_lg": 8.912074,
"sensors_data": {
"battery": {
"unit": "%",
"value": 95
},
"Temp": {
"unit": "°C",
"value": 21
},
"Humi": {
"unit": "%",
"value": 0
},
"Light": {
"unit": null,
"value": 0
},
"Shocks": {
"unit": null,
"value": 0
}
}
},
],
"meta": {
"total": 1,
"count": 1,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/sensors/{sensor_uid}/transactions
Request parameters
Parameter | Format | Description |
---|---|---|
count |
integer | |
offset |
integer | |
order |
string | <order_name>: <value> Possible order name:
|
filters |
string | <filter_name>: <value>, <filter_name>: <value>, ... Possible filter names:
|
verbose |
boolean | true / false Retrieves some extended output, including:
|
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of the shipment this sensor belongs to. |
seq_number |
integer | Sequential number of this sensor transaction. |
timestamp |
date | Date and time when this sensor took measurements and created a transaction. |
received_at |
date | Date and time when this transaction was received on the platform. |
address |
string | Address from where this sensor sent the transaction. |
lt |
float | Latitude of the point from which this sensor sent the transaction. |
lg |
float | Longitude of the point from which this sensor sent the transaction. |
raw_address |
string | An unprocessed address, as it is taken from a sensor. |
raw_lt |
float | An unprocessed lattitude of the point, as it is taken from a sensor. |
raw_lg |
float | An unprocessed longitude of the point, as it is taken from a sensor. |
sensors_data |
object | Parameters that this sensor sent in the transaction. Set of parameters listed in this object differs in each case and depends on the sensor type and user's custom parameters. |
sensors_data.battery |
object | Contains information about the battery on the point from which this sensor sent the transaction. |
sensors_data.battery.unit |
string | The battery level measurement unit. |
sensors_data.battery.value |
integer | The battery level value. |
sensors_data.Temp |
object | Contains information about the temperature on the point from which this sensor sent the transaction. |
sensors_data.Humi |
object | Contains information about the humidity level on the point from which this sensor sent the transaction. |
sensors_data.Light |
object | Contains information about the light level on the point from which this sensor sent the transaction. |
sensors_data.Shocks |
object | Contains information about the number of shocks on the point from which this sensor sent the transaction. |
Get monitoring events triggered for a shipment and its sensors
Retrieve an array of monitoring events that have been triggered for a shipment and/or its sensors.
curl -X 'GET' 'https://cloud.moeco.io/api/ext/v1/shipments/alert_events?filters=severity:alert|warning,shipment_id:7490&order=timestamp:desc&offset=0' \
-H "Authorization: Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H 'accept: application/json'
const axios = require('axios');
async function main() {
const options = {
method: 'GET',
url: `https://cloud.moeco.io/api/ext/v1/shipments/alert_events`,
headers: {
authorization: `Apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
},
params: {
count: 100,
offset: 0,
filters: 'severity: alert|warning,shipment_id: 7490',
order: 'timestamp: desc'
},
};
const response = await axios(options);
console.log(response.data)
}
main();
The above command returns JSON structured like this:
{
"data": [
{
"shipment_id": 7490,
"sensor_uid": "jv:fd:ce:6d:a8:63",
"name": "Reached the destination",
"alert_event_type": "DST",
"actual_value": "{\"lg\":12.6324802,\"lt\":51.867283,\"address\":\"Lutherstadt\",\"place_id\":[\"ChIJzWPsccYvpkcREFyt8Hww2yA\"]}",
"severity": "Alert",
"timestamp": "2022-08-19T07:35:46.000Z",
"resolved_date": "2022-08-19T07:35:46.000Z"
},
],
"meta": {
"total": 1,
"count": 1,
"offset": 0,
"error": null
}
}
HTTP request
GET https://cloud.moeco.io/api/ext/v1/shipments/alert_events
Request parameters
Parameter | Format | Description |
---|---|---|
count |
integer | |
offset |
integer | |
order |
string | <order_name>: <value> Each request must contain only one order option. Possible order name:
|
filters |
string | <filter_name>: <value>, <filter_name>: <value>, ... Possible filter names:
|
Response parameters
Parameter | Format | Description |
---|---|---|
shipment_id |
integer | Unique identifier of the shipment for which a monitoring event triggered. |
sensor_uid |
string | Unique identifier of the sensor for which a monitoring event triggered. |
name |
string | Name of the monitoring event. |
alert_event_type |
string | Parameter that triggered the monitoring event. |
actual_value |
string | Value that have been registered when the monitoring event triggered. |
severity |
string | Monitoring event severity level. |
timestamp |
date | Date and time when the monitoring event triggered. |
resolved_date |
date | Date and time when the monitoring event stopped triggering. |
Errors
Moeco API uses the following error codes:
Error Code | Caption | Explanation |
---|---|---|
400 | Bad Request | Your request is invalid. |
401 | Unauthorized | Your API key is wrong. |
404 | Not Found | The data could not be found. |
406 | Not Acceptable | You requested a format that isn't JSON. |
429 | Too Many Requests | You're sending too many requests. |
500 | Internal Server Error | We had a problem with our server. Try again later. |
503 | Service Unavailable | We're temporarily offline for maintenance. Please try again later. |