All routes are prefixed by the API version to use, for example /v1
for API version 1.
Version(s) currently supported : v1
Alerts are described using the following JSON format:
{
"id": uuid
"name": string,
"measurement_id": uuid,
// "activation_timeranges": [{
// "id": uuid,
// "timeUnit": "day"|"hour"|"minute"|"second",
// "start": integer
// "end": integer
// }],
"activated": boolean, // temporary, while activation_timeranges is not supported
"actions": [{
// see actions description
}],
"triggers": [{
// see triggers description
}]
}
{
"id": uuid,
"type": "webhook",
"webhook": {
"url": "",
// oauth2
},
"ratelimits": [{
"timeUnit": "day" | "hour" | "minute" | "second",
"timeValue": integer,
"maxTriggers": integer
}]
}
Returns alert with the JSON format described above.
Status codes:
- 200 OK (resource exists, return the alert in body)
- 500 Internal Server Error (error while getting the entity)
- 410 Gone (resource does not exist, but existed previously)
- 404 Not found (resource never existed)
- 406 Not Acceptable (‘accept’ header not supported)
Returns an array of alerts with the JSON format described above. Query string:
measurement_id
: string -> filter alerts on the specified measurement (may be specified multiple times to filter on several measurement ids)tag
: string -> filter alerts on the specified tagtags
: string[] -> filter alerts on the specified tags
Status codes:
- 200 OK (get succeeded, return the alerts in body)
- 500 Internal Server Error (error while getting the entities)
- 404 Not found (resource never existed)
- 406 Not Acceptable (‘accept’ header not supported)
Algo: don’t delete, just set to NULL. created_at updated_at deleted_at => NULL || NOW()
Status codes:
- 200 OK (delete succeeded, don't return any body)
- 500 Internal Server Error (error while deleting the entity)
- 410 Gone (ressource does not exists, but excited previously)
- 404 Not found (ressource never existed)
Check schema if invalid => 401 Do query an error occured ? -> 500 success ? resource created ? 201 resource already existed ? 204
Status codes:
- 201 Created (once the resource is created)
- 204 No Content (the resource was updated)
- 401 Malformed (schema validation failed)
- // 409 Conflicts (if the alert already exists), http://httpstatus.es/409
- 500 Internal Server Error (could not create resource)
Triggers analyze the data (or the absence of data) recorded by your measurements and determine whether or not to trigger an alert.
A no_data
trigger is defined using the following JSON structure :
{
"operator": {
"name": "no_data",
"rate": {
"timeUnit": "day" | "hour" | "minute" | "second",
"timeValue": integer
}
},
"target": "data" | "data.X"
}
An any_data
trigger is defined using the following JSON structure :
{
"operator": {
"name": "any_data",
"rate": {
"timeUnit": "day" | "hour" | "minute" | "second",
"timeValue": integer
}
},
"target": "data" | "data.X"
}
anomalous
trigger is defined using the following JSON structure :
{
"operator": {
"name": "anomalous"
},
"target": "data" | "data.X"
}
{
"operator": {
"name": "threshold_min",
"duration": {
"timeUnit": "day" | "hour" | "minute" | "second",
"timeValue": integer
}
},
"target": "data" | "data.X",
"value": number
}
{
"operator": {
"name": "equal",
"duration": {
"timeUnit": "day" | "hour" | "minute" | "second",
"timeValue": integer
},
},
"target": "data" | "data.X",
"value": number
}
{
"operator": {
"name": "threshold_max"
"duration": {
"timeUnit": "day" | "hour" | "minute" | "second",
"timeValue": integer
},
},
"target": "data" | "data.X",
"value": number,
}
newValue
trigger is defined using the following JSON structure :
{
"operator": {
"name": "newValue"
},
"target": "data"
}
Avoir une route qui liste les operators (et leurs capacités en fonction des triggers) -> modifier schéma de BDD
A chaque fois que l’on envoie un point, il est possible de préciser en plus du data et du metadata un tags:[], ces tags seront automatiquement ajouté au set de tags de measurements.
Connect to the database using the "citext" type, and run "CREATE EXTENSION citext".