To update an existing monitor, send a PATCH request to /devices/{id}
with a JSON body containing the parameters you want to change. You can:
-
Enable or disable a monitor.
-
Change the monitoring locations.
-
Change the run interval.
-
Turn alerting on and off for a monitor.
-
Upload a new DéjàClick script, Selenium script or SoapUI project, and so on.
See Monitor Data Fields for all parameters that can be updated.
Note: | The operation supports all monitor types except BitBar. |
Syntax
Request URL
PATCH https://www.alertsite.com/alertsite-restapi/devices/{id}
where {id}
is the monitor ID.
Authentication
This operation requires authentication. The authenticating user’s role must allow the user to edit monitors.
Request Body
The request body should specify the field name/value pairs you want to update, formatted as a JSON object. For a list of supported data fields, see Monitor Data Fields. Below are some examples.
Enable a monitor:
{
"enabled": "y"
}
Change the monitor locations to Fort Lauderdale (10), Atlanta (20) and Fremont (30), with Fort Lauderdale as the primary location:
{
"home_location": 10,
"locations": [
{ "id" : 10 },
{ "id" : 20 },
{ "id" : 30 }
]
}
Change the interval:
{
"interval": 15
}
Change the interval for a monitor that uses fullpage monitoring:
{
"interval": 15,
"interval_fullpage": 15
}
To replace the DéjàClick script, Selenium script or SoapUI project used by the monitor, include the file contents in the script
field, encoded as explained in Add Monitor. If uploading large files, make sure your client timeout is sufficient for the upload to complete.
Note: | Uploading password-protected SoapUI projects is not supported. They can only be uploaded manually in AlertSite. |
Response Body
Successful response contains status
0:
{
"metadata": {
"login": "[email protected]",
"session": "ef770427109e343e",
"status": "0",
"message": "No errors.",
}
}
Error response contains a non-zero status
:
{
"metadata": {
"login": "[email protected]",
"session": "ef770427109e343e",
"status": "65",
"message": "Invalid device.",
}
}
Code Examples
cURL
These commands disable monitor 1234 using different authentication types.
Windows
Note: | New lines are added for readability; the actual command should be one continuous line. |
Using the login and session ID:
curl -X PATCH "https://www.alertsite.com/alertsite-restapi/devices/1234?login=demo%40example.com&session=SESSION_ID"
-H "Content-Type: application/json"
-d "{\"enabled\": \"n\"}"
Using the Authorization header with a bearer token:
curl -X PATCH https://www.alertsite.com/alertsite-restapi/devices/1234
-H "Content-Type: application/json"
-H "Authorization: Bearer BEARER_TOKEN"
-d "{\"enabled\": \"n\"}"
*nix, OS X
Using the login and session ID:
curl -X PATCH "https://www.alertsite.com/alertsite-restapi/devices/1234?login=demo%40example.com&session=SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"enabled": "n"}'
Using the Authorization header with a bearer token:
curl -X PATCH https://www.alertsite.com/alertsite-restapi/devices/1234 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer BEARER_TOKEN" \
-d '{"enabled": "n"}'
Python
This example changes locations for monitor 1234.
Python
import requests # Requests library – http://docs.python-requests.org/
import base64
import json
baseUrl = 'https://www.alertsite.com/alertsite-restapi'
login = '[email protected]' # Replace with your AlertSite login email
password = 'pa55w0rd' # Replace with your AlertSite password
monitorId = 332522
locations = {
'home_location': 10,
'locations': [
{'id': 10}, # Fort Lauderdale, FL
{'id': 20}, # Atlanta, GA
{'id': 72} # Boston, Massachusetts
]
}
# Log in
payload = {'login': login, 'password': password}
r = requests.post(baseUrl + '/login', data=json.dumps(payload), headers={'Content-Type': 'application/json'})
session = r.json()['metadata']['session']
# Generate the bearer token to authenticate subsequent requests
# For Python 2.4-2.x:
# token = base64.b64encode(login + ':' + session)
# for Python 3.6:
token = base64.b64encode((login + ':' + session).encode('ascii')).decode('ascii')
# Change monitor locations
url = baseUrl + '/devices/' + str(monitorId)
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}
r = requests.patch(url, data=json.dumps(locations), headers=headers)
result = r.json()['metadata']
if int(result['status']) == 0:
print('Monitor locations have been updated.')
else:
print('Error {status}: {message}'.format(**result))