You can perform a filter on objects for use with the GET
method to reduce API calls and improve performance.
To perform a filter, use the POST
method to indicate the object type (the elements, groups, and monitors endpoints), and provide JSON-compliant object IDs:
POST https://youruptime/api/v1/<endPoint>/filter { ids : [a,b,c] }
The response includes a newly created filter ID for the collection of endpoints:
{"id":n}
Use the ID with a GET
method to return an array of elements in the standard element listing format:
GET https://youruptime/api/v1/<endPoint>/filter/<n>/
You can also return an array of element statuses:
GET https://youruptime/api/v1/<endPoint>/filter/<n>/status
Object IDs
For "monitor" and "group" object types, the IDs provided in the POST
request correspond to the id field for the objects filtered. The object ID provided must match the object type declared in the request.
Similarly, element IDs can be provided for "element" object types:
{ ids : [14,6,9], }
However, for this object type, groups can also be provided. This can be helpful in cases where you want to output element listings, but are using groups as a way to declare the elements. In the request, the group id
field is denoted as groupIDs
:
{ groupIds : [2,3] }
With this call, both elements and groups can also be filtered together:
{ ids : [14,6,9], groupIds : [2,3] }
Monitors Filter Example
Request:
POST https://youruptime:9997/api/v1/monitors/filter { ids : [21801,21802] }
Returned:
{"id":1}
Next request:
GET https://youruptime:9997/api/v1/monitors/filter/1/status
Returned:
[ { "acknowledgedComment": null, "elementId": 556, "elementStatus": { "id": 556, "isMonitored": true, "lastCheckTime": "2015-01-15T10:36:40", "lastTransitionTime": "2015-10-01T08:35:16", "message": null, "name": "Aetos", "powerState": null, "status": "OK" }, "id": 21801, "isAcknowledged": false, "isHidden": false, "isHostCheck": false, "isMonitored": true, "lastCheckTime": "2015-01-15T10:31:58", "lastTransitionTime": "2015-01-15T10:02:15", "message": " Unable to contact Agent (Aetos on port 3333)", "name": "UPTIME-Aetos", "status": "CRIT" }, { "acknowledgedComment": null, "elementId": 556, "elementStatus": { "id": 556, "isMonitored": true, "lastCheckTime": "2015-01-15T10:36:40", "lastTransitionTime": "2015-10-01T08:35:16", "message": null, "name": "Aetos", "powerState": null, "status": "OK" }, "id": 21802, "isAcknowledged": false, "isHidden": false, "isHostCheck": true, "isMonitored": true, "lastCheckTime": "2015-01-15T10:36:40", "lastTransitionTime": "2015-10-01T08:35:16", "message": "Ping completed: 5 sent, 0.0% loss, 0.6ms average round trip time", "name": "PING-Aetos", "status": "OK" } ]
Elements Filter Example
Request:
POST https://youruptime:9997/api/v1/elements/filter { ids : [14,6,9] }
Returned:
{"id":2}
Next request:
GET https://youruptime:9997/api/v1/elements/filter/2/status
Groups Filter Example
Request:
POST https://youruptime:9997/api/v1/groups/filter { ids : [2,3] }
Returned:
{"id":3}
Next request:
GET https://youruptime:9997/api/v1/groups/filter/3/status
Filter Persistence
By default, a filter created from a POST
request persists for 5 minutes, and are designed to be used immediately after creation. The GET
method can use the filter until expiry, after which a 410 Gone
status code is returned.
Only the Uptime Infrastructure Monitor user who created the filter is able to see and use it.