To create a new DNS monitor, send a POST request to /monitors/name-server
with a JSON body containing the monitor configuration.
Request URL
POST https://api.alertsite.com/api/v3/monitors/name-server
Authentication
The request must include the Authorization
header containing a user’s access token:
Authorization: Bearer ACCESS_TOKEN
See Authentication for more information.
The authenticating user must have permissions to create monitors.
Request body
The request body is a JSON object containing the monitor configuration parameters (see Monitor Object). The minimum required fields are:
-
billing_plancode
-
hostname
-
name
{
"billing_plancode": "UBM - A/A",
"hostname": "ns1.mycompany.com",
"name": "DNS Sample Monitor"
}
Here is an example with all supported fields (see Monitor Object for a description of these fields):
{
"alert_note": "Optional alert note",
"allow_internal_testing": true,
"billing_plancode": "UBM - A/A",
"custom_properties": [
{
"id": 228,
"name": "Environment",
"value": "development",
"value_id": 550
}
],
"enabled": true,
"has_active_performance_alerts": false,
"has_performance_alerts": true,
"has_sla": false,
"home_location": 10,
"hostname": "8.8.8.8",
"id": 123456,
"interval": 5,
"ipv4": "8.8.8.8",
"locations": [
{
"id": 10,
"name": "Fort Lauderdale (FL)",
"region": 1
},
{
"id": 20,
"name": "Atalnta (GA)",
"region": 1
}
],
"mode": "Global Verify",
"monitor_location_count": 1,
"name": "DNS Sample Monitor",
"name_to_resolve": "example.com",
"name_to_resolve_id": 0,
"note": "Optional monitor note",
"notify_on_error": true,
"port": "",
"resolve_dns": true,
"retry_on_failure": true,
"rotate_locations": true,
"sla_id": null,
"timeout": 30,
"traceroute_on_error": true,
"type": "name-server"
}
Response body
On success, the operation returns the ID of the created monitor.
{
"id": "123456"
}
Error responses have a non-200 status code and contain the errors
list, such as:
{
"errors": [
{
"code": 400,
"message": "invalid_request - User authentication failed."
}
]
}
Try it out
Click here to test this operation in AlertSite’s interactive API console.
Code examples
This code creates a DNS monitor to query IP address 8.8.8.8 and test the DNS lookup for the example.com domain name:
cURL (Windows)
curl -X POST https://api.alertsite.com/api/v3/monitors/name-server
-H "Authorization: Bearer ACCESS_TOKEN"
-H "Content-Type: application/json"
-d "{\"billing_plancode\": \"UBM - A/A\", \"hostname\": \"8.8.8.8\", \"name_to_resolve\": \"example.com\, \"name\": \"DNS Sample Monitor\"}"
Note: New lines are added for readability.
The actual command should be one continuous line.
cURL (Bash)
curl -X POST https://api.alertsite.com/api/v3/monitors/name-server \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"billing_plancode": "UBM - A/A", "hostname": "8.8.8.8", "name_to_resolve": "example.com", "name": "DNS Sample Monitor"}'
Python
import requests # Requests library http://docs.python-requests.org
import json
baseUrl = 'https://api.alertsite.com/api/v3'
username = '[email protected]' # Replace with your AlertSite login email
password = 'pa55w0rd' # Replace with your AlertSite password
monitor_params = {
'billing_plancode': 'UBM - A/A',
'name': 'DNS Sample Monitor',
'hostname': '8.8.8.8',
'name_to_resolve': 'example.com'
}
# Login
payload = {'username': username, 'password': password}
r = requests.post(baseUrl+'/access-tokens', data=json.dumps(payload), headers={'Content-Type': 'application/json'})
token = r.json()['access_token']
# Create the monitor
headers = {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
r = requests.post(baseUrl+'/monitors/name-server', data=json.dumps(monitor_params), headers=headers)
result = r.json()
if r.status_code == requests.codes.ok:
monitor_id = result['id']
print('Successfully created the monitor. ID:{}'.format(monitor_id))
else:
print('Could not create a monitor. The following error(s) occurred:', *result['errors'], sep='\n')
See Also
Monitor Operations
Edit a DNS Monitor
Monitor Object Data Fields