API Examples
In this page we are going to show some examples of how to create different type of widgets using filters, post aggregators and filtered aggregators.
Post Aggregators
The next widget represent a table with one dimension, id
, and two metrics, speed
and sumUsers
. The metric speed
is a post aggregator calculated with two aggregators, messages
and sumSpeed
, that have to referenced in the aggregators attribute.
Request
POST /api/v1/widgets
Accept: application/json
Content-Type: application/json
{
"type": "WidgetTable",
"title": "Assets Resume",
"dashboard_id": 25,
"row": 0,
"col": 0,
"size_x": 4,
"size_y": 3,
"granularity": "all",
"start_time": "2018-05-15T14:50:00.000Z",
"end_time": "2018-05-15T15:07:01.000Z",
"limit": 5,
"options": {
"metrics": [
"speed",
"sumUsers"
]
},
"datasource_name": "985446e3-c2be-416d-9489-4b5f61859566_assets",
"dimensions": [
"id"
],
"aggregators": [
{
"aggregator": "messages",
"aggregator_name": "messages",
"filters": []
},
{
"aggregator": "sumUsers",
"aggregator_name": "sumUsers",
"filters": []
},
{
"aggregator": "sumSpeed",
"aggregator_name": "sumSpeed",
"filters": []
}
],
"post_aggregators": [
{
"output_name": "speed",
"operator": "/",
"field_1": "sumSpeed",
"field_2": "messages"
}
]
}
Histogram
This widget represent a histogram, using an approxHistogramFold
aggregator and configuring custom buckets.
Request
POST /api/v1/widgets
Accept: application/json
Content-Type: application/json
{
"type": "WidgetHistogram",
"title": "Dwell Time",
"dashboard_id": 1,
"row": 4,
"col": 5,
"size_x": 7,
"size_y": 4,
"range": "current_day",
"limit": 5,
"options": {
"histogram": {
"type": "customBuckets",
"breaks": [
0,
10,
60,
120,
14400
]
}
},
"datasource_name": "046b3814-0d0c-4fd0-98ea-32ba740709c3_cmx",
"aggregators": [
{
"aggregator": "hist_dwell",
"aggregator_name": "hist_dwell"
}
]
}
Heatmap
Request
POST /api/v1/widgets
Accept: application/json
Content-Type: application/json
{
"type": "WidgetHeatmap",
"title": "Users Distribution",
"dashboard_id": 25,
"row": 6,
"col": 0,
"size_x": 6,
"size_y": 3,
"granularity": "all",
"range": "last_1_hour",
"limit": 100,
"options": {},
"datasource_name": "985446e3-c2be-416d-9489-4b5f61859566_assets",
"dimensions": [
"coordinates"
],
"aggregators": [
{
"aggregator": "sumUsers",
"aggregator_name": "sumUsers",
"filters": []
}
]
}
Location
Request
POST /api/v1/widgets
Accept: application/json
Content-Type: application/json
{
"type": "WidgetLocation",
"title": "Bus Global Position",
"dashboard_id": 26,
"row": 0,
"col": 0,
"size_x": 12,
"size_y": 4,
"range": "last_1_day",
"granularity": "all",
"limit": 500,
"options": {},
"datasource_name": "985446e3-c2be-416d-9489-4b5f61859566_gijonbus",
"dimensions": [
"coordinates",
"license_plate"
],
"aggregators": [
{
"aggregator": "messages",
"aggregator_name": "messages",
"filters": []
}
]
}
Route
Request
POST /api/v1/widgets
Accept: application/json
Content-Type: application/json
{
"type": "WidgetRoute",
"title": "Route Bus001",
"dashboard_id": 23,
"row": 0,
"col": 4,
"size_x": 4,
"size_y": 4,
"range": "last_1_hour",
"granularity": "minute",
"limit": 17,
"options": {
"distance_unit": "km",
"routing_profile": "driving"
},
"datasource_name": "985446e3-c2be-416d-9489-4b5f61859566_assets",
"dimensions": [
"coordinates",
"id"
],
"aggregators": [
{
"aggregator": "messages",
"aggregator_name": "messages",
"filters": []
}
],
"filters": [
{
"dimension_name": "id",
"operator": "eq",
"value": "Bus001"
}
]
}