Create Synthetic API Monitoring Job API

This page describes the API used to create and configure a Synthetic API monitoring job.

Create an API Monitoring Job

Creates a new API monitoring job with the specified JSON payload.

Resource URL

POST <api_server_URL>/v1/synthetic/api/schedule

or, use the following URL if you are using the OAuth authentication method:

POST <controller_url>/controller/restui/synthetic/api-schedule/<applicationId>/updateSchedule

Request/Response Format

JSON

Example

Request
JAVASCRIPT
{
"scheduleRunConfigs": [
{
"rate": {
"value": 15,
"unit": "MINUTES"
},
"daysOfWeek": [
"SUN",
"WED",
"THUR",
"FRI",
"MON",
"TUES",
"SAT"
],
"timezone": "UTC"
}
],
"description": "jobUI",
"apiMetadata": {
"script": {
"contentType": "JAVASCRIPT",
"script": "// Javascript based API Monitoring Test\n\nconst assert = require(\"assert\");\n(async () => {\n    var response = await client.get(\"<URL>\");\n    assert.equal(response.statusCode, 200);\n    assert.equal(response.statusMessage, \"OK\");\n    for(var key in response.headers) {\n        console.log(`${key} : ${response.headers[key]}`);\n    }\n    assert.equal(response.body, \"response body\");\n})()"
}
},
"browserCodes": [
"API"
],
"chromeVersions": [],
"locationCodes": [
"M50"
],
"timeoutSeconds": 15,
"appKey": "appKey",
"composableConfig": {
"numBeforeConfirmedError": 0,
"resourceErrorDetection": {
"ignoreWhen": {
"resourceUrlContains": [],
"resourceMimeType": []
},
"onlyWhen": {
"resourceUrlContains": [],
"resourceMimeType": []
}
}
},
"performanceCriteria": {
"retestOnWarning": false,
"retestOnCritical": false,
"warningCriterion": [],
"criticalCriterion": []
}
}
Response
JSON
{
"_id": "job_id",
"version": 1,
"scheduleRunConfigs": [
{
"rate": {
"value": 1,
"unit": "MINUTES"
},
"daysOfWeek": [
"WED",
"FRI",
"SUN",
"SAT",
"TUES",
"MON",
"THUR"
],
"timezone": "UTC"
}
],
"userEnabled": true,
"systemEnabled": true,
"type": "ALL_BROWSERS",
"rate": {
"value": 15,
"unit": "MINUTES"
},
"daysOfWeek": [
"WED",
"FRI",
"SUN",
"SAT",
"TUES",
"MON",
"THUR"
],
"timezone": "UTC",
"description": "https://appdynamics.com",
"appKey": "appKey",
"scheduleMode": "NONE",
"url": "https://appdynamics.com",
"browserCodes": [
"Chrome"
],
"chromeVersions": [
"86"
],
"locationCodes": [
"BOM",
"M50"
],
"failOnPageError": true,
"captureVisualMetrics": true,
"simulateMobileBrowser": false,
"networkProfile": {
"name": "Native",
"downloadKbps": 5000,
"uploadKbps": 1000,
"roundtripTimeMillis": 28,
"packetLossPercent": 0,
"isDefault": false
},
"timeoutSeconds": 15,
"state": {
"lastFireTime": "2022-04-06T05:57:16.000Z",
"nextFireTime": "2022-04-06T06:00:16.000Z"
},
"projectedUsage": {
"projectedDailyRuns": 2880,
"projectedMonthlyRuns": 86400
},
"performanceCriteria": {
"retestOnWarning": false,
"retestOnCritical": false,
"criterion": []
},
"composableConfig": {
"numBeforeConfirmedError": 0,
"resourceErrorDetection": {
"ignoreWhen": {
"resourceUrlContains": [],
"resourceMimeType": []
},
"onlyWhen": {
"resourceUrlContains": [],
"resourceMimeType": []
}
}
},
"created": "2022-04-05T05:30:36.426Z",
"updated": "2022-04-05T05:30:36.426Z"
}

Request Parameters

Parameter Name Parameter Type Value Description Mandatory Request
scheduleRunConfigs - No
rate - No
value number

Minutes: 1 - 60

Hours: 1 - 24

Days: "null"

No
unit String Minutes, Hours, or Days No
daysOfWeek String "SUN", "MON", "TUES", "WED", "THUR", "FRI", "SAT" No
timeRange String Between hh:mm AM/PM to hh:mm AM/PM No
timezone String "UTC" GMT +/-hh:mm No
startTimeMillis String No
endTimeMillis String No
description String Job name Name of the job Yes
url String "null" or URL to monitor

The URL that you want to monitor.

When you use this parameter, the value of the script

No
script String

"null" or python-based selenium script to monitor

If you have a scripted job, specify the python-based selenium script used for simulating the user flow or behavior.

When you use this parameter, the value of the url

No
apiMetadata String Script object of the API monitoring job Yes
contentType String Yes
script String Yes
browserCodes String

Use the following Synthetic internal browser codes:

  • Chrome: Chrome
  • Internet Explorer: IE11
  • Firefox: Firefox
  • Mobile: Chrome.DeviceEmulation
No
chromeVersions String Chrome browser version 86 No
locationCodes String

Synthetic internal location codes of each agent location. See Location Codes.

Yes
timeoutSeconds Number No
appKey String Application Key

You can get the application key from the Controller.

  1. Navigate to User Experience > API Monitoring.
  2. Hover over the collection name and click the copy icon to copy the Collection Key. The Collection Key is the Application Key.
Yes

networkProfile

String "name": "Native", "downloadKbps": 5000, "uploadKbps": 1000, "roundtripTimeMillis": 28, "packetLossPercent": 0, "isDefault": false No
composableConfig - You can use this parameter to configure:
  • Custom Retry
  • Availability Rules
No
numBeforeConfirmedError Number 0, 1, 2, 3, 5, or 10 Number of retries No
resourceErrorDetection - No
ignoreWhen - No
resourceUrlContains String Comma separated list List of resource URLs No
resourceMimeType String No
onlyWhen - No
resourceUrlContains String Comma separated list List of resource URLs No
resourceMimeType String No
deviceEmulationProfile String No
requestHeader String No
performanceCriteria - No
retestOnWarning Boolean true or false Re-test on warning event No
retestOnCritical Boolean true or false Re-test on critical event No
warningCriterion String No
criticalCriterion String No

Location Codes

Cloud Location Codes
Azure
Amsterdam NET
San Antonio SAN
Melbourne ASV
Toronto CAC
Chennai SIC
AWS
Mumbai BOM
Dublin DUB
Frankfurt FRA
Sao Paulo GRU
Hong Kong HON
Ashburn IAD
Seoul ICN
London LON
Boardman M50
Milan MIL
Montreal MON
Tokyo NRT
Paris PAR
San Francisco SFO
Singapore SIN
Sydney SYD

Response Status Codes

Code Description
200 Success
401 Unauthorized
402 Exceeded job limit
422 Validation failure
429 Throttled
500 Internal server error