Third-party synthetic API - POST third-party monitors to Dynatrace
Pushes third-party synthetic monitors, locations, and monitor execution results to Dynatrace.
The request consumes an application/json
payload.
POST | SaaS | https://{your-environment-id}.live.dynatrace.com/api/v1/synthetic/ext/tests |
Environment ActiveGate | https://{your-activegate-domain}:9999/e/{your-environment-id}/api/v1/synthetic/ext/tests |
Authentication
To execute this request, you need an access token with ExternalSyntheticIntegration
scope.
To learn how to obtain and use it, see Tokens and authentication.
Parameters
The JSON body of the request. Contains third-party synthetic monitors, locations, and results.
Request body objects
The 3rdPartySyntheticTests
object
The timestamp of the message creation, in UTC milliseconds.
The URL of the third-party synthetic monitor icon.
The type of the third-party synthetic monitor.
The list of results of third-party synthetic monitor execution.
The 3rdPartySyntheticLocation
object
The third-party Synthetic location.
The ID of the location.
The IP address of the location.
The name of the location, displayed in the UI.
The 3rdPartySyntheticTestResult
object
The results of third-party synthetic monitor execution.
The ID of the third-party synthetic monitor.
Results of third-party monitor executions per location.
Number of steps in the monitor. Defaults to number of SyntheticTestSteps.
The 3rdPartySyntheticLocationTestResult
object
Results of third-party monitor executions per location.
The ID of the location.
The overall response time of the monitor from this location, in milliseconds.
If absent, it is calculated as the sum of response times of all steps.
The timestamp of text execution start, in UTC milliseconds.
If the test was successful (true
) or failed (false
) - will influence availability timeseries.
The overall availability of the monitor from this location, percent.
If absent, calculated as the number of successful steps compared to the overall number of steps.
The SyntheticMonitorStepResult
object
The result of the individual step of a synthetic monitor.
ID of the step. It is unique within the test definition.
The response time of the step, in milliseconds.
Absent when no meaningful response time is available (as may be the case for certain error conditions such as a misconfigured step script).
The timestamp of test step execution, UTC milliseconds.
The SyntheticMonitorError
object
The error message of a synthetic monitor step.
The error code.
The error message.
The 3rdPartySyntheticMonitor
object
The third-party synthetic monitor.
The flag of the deleted monitor. Default is false
.
If true
, set the enabled parameter to false
.
A description of the monitor.
The URL to the results of monitor execution.
The URL to edit the monitor in the original UI.
The monitor is enabled (true
) or disabled (false
). Default is true
.
If true
, set the deleted parameter to false
.
The timestamp of the monitor expiration, in UTC milliseconds.
The ID of the monitor.
The timeout of the monitor, in seconds. If no result is reported within this time, the availability state switches to unmonitored. Default is doubled frequency of the monitor.
The frequency of the monitor, in seconds. The monitor is repeated with the specified interval at the third-party source.
Dynatrace expects results of a monitor execution with the specified interval. If you report results to Dynatrace less often, adjust the noDataTimeout value accordingly.
The information on monitor setup, for example browser
.
The name of the monitor.
The SyntheticTestLocation
object
Synthetic test location.
The location is enabled/disabled. Default is true
, enabling the location.
The ID of the location.
The SyntheticTestStep
object
The step of a synthetic monitor.
The ID of the step.
The name of the step, displayed in the UI.
Request body JSON model
This is a model of the request body, showing the possible elements. It has to be adjusted for usage in an actual request.
{"locations": [{"id": "string","ip": "string","name": "string"}],"messageTimestamp": 1,"syntheticEngineIconUrl": "string","syntheticEngineName": "string","testResults": [{"id": "string","locationResults": [{"id": "string","responseTimeMillis": 1,"startTimestamp": 1,"stepResults": [{"error": {"code": 1,"message": "string"},"id": 1,"responseTimeMillis": 1,"startTimestamp": 1}],"success": true,"successRate": 1}],"totalStepCount": 1}],"tests": [{"deleted": true,"description": "string","drilldownLink": "string","editLink": "string","enabled": true,"expirationTimestamp": 1,"id": "string","locations": [{"enabled": true,"id": "string"}],"noDataTimeout": 1,"scheduleIntervalInSeconds": 1,"steps": [{"id": 1,"title": "string"}],"testSetup": "string","title": "string"}]}
Response
Response codes
Success. The information is accepted and stored.
Example
In this example, the request pushes the following data from third-party synthetic engine My third-party synthetic to Dynatrace:
- Three locations: Linz1, Linz2, and Linz3.
- Two monitors: example of synthetic monitor - 1 and example of synthetic monitor - 2, each containing three steps and running from two locations.
- One result per step, per location, for each monitor.
Monitors have the following parameters:
Linz2
Linz3
Step1-2
Step1-3
Step2-2
Step3-3
The example of synthetic monitor - 1 monitor has the following response times in milliseconds:
The example of synthetic monitor - 2 monitor has the following response times in milliseconds:
The API token is passed in the Authorization header.
Since the request body is lengthy, it is truncated in this example Curl section. See the full body in the Request body section. You can download the request body JSON to perform a sample request in your environment. Be sure to replace the timestamps with recent ones or the results will be too old.
Curl
curl -X POST \https://mySampleEnv.live.dynatrace.com/api/v1/synthetic/ext/tests \-H 'Authorization: Api-Token dt0c01.abc123.abcdefjhij1234567890' \-H 'Content-Type: application/json' \-d '{ <truncated - see the Request body section >}'
Request URL
https://mySampleEnv.live.dynatrace.com/api/v1/synthetic/ext/tests
Request body
{"syntheticEngineName": "My third-party synthetic","syntheticEngineIconUrl": "https://static.thenounproject.com/png/1745-200.png","messageTimestamp": 1543572265528,"locations": [{"id": "Linz1","ip": "127.0.0.1","name": "Linz1"},{"id": "Linz2","ip": "127.0.0.2","name": "Linz2"},{"id": "Linz3","ip": "127.0.0.3","name": "Linz3"}],"tests": [{"id": "3rdPartySyntheticMonitor1","title": "example of synthetic monitor - 1","scheduleIntervalInSeconds": 300,"locations": [{"id": "Linz1"},{"id": "Linz2"}],"steps": [{"id": 1,"title": "Step1-1"},{"id": 2,"title": "Step1-2"},{"id": 3,"title": "Step1-3"}]},{"id": "3rdPartySyntheticMonitor2","title": "example of synthetic monitor - 2","scheduleIntervalInSeconds": 300,"locations": [{"id": "Linz2"},{"id": "Linz3"}],"steps": [{"id": 1,"title": "Step2-1"},{"id": 2,"title": "Step2-2"},{"id": 3,"title": "Step2-3"}]}],"testResults": [{"id": "3rdPartySyntheticMonitor1","totalStepCount": 3,"locationResults": [{"id": "Linz1","startTimestamp": 1543572262538,"success": true,"stepResults": [{"id": 1,"startTimestamp": 1543572262538,"responseTimeMillis": 7790},{"id": 2,"startTimestamp": 1543572262538,"responseTimeMillis": 2073},{"id": 3,"startTimestamp": 1543572262538,"responseTimeMillis": 8650}]},{"id": "Linz2","startTimestamp": 1543572262548,"success": true,"stepResults": [{"id": 1,"startTimestamp": 1543572262548,"responseTimeMillis": 2075},{"id": 2,"startTimestamp": 1543572262548,"responseTimeMillis": 4079},{"id": 3,"startTimestamp": 1543572262548,"responseTimeMillis": 3937}]}]},{"id": "3rdPartySyntheticMonitor2","totalStepCount": 3,"locationResults": [{"id": "Linz2","startTimestamp": 1543572262548,"success": true,"stepResults": [{"id": 1,"startTimestamp": 1543572262548,"responseTimeMillis": 2200},{"id": 2,"startTimestamp": 1543572262548,"responseTimeMillis": 6903},{"id": 3,"startTimestamp": 1543572262548,"responseTimeMillis": 4821}]},{"id": "Linz3","startTimestamp": 1543572262558,"success": true,"stepResults": [{"id": 1,"startTimestamp": 1543572262558,"responseTimeMillis": 9123},{"id": 2,"startTimestamp": 1543572262558,"responseTimeMillis": 9722},{"id": 3,"startTimestamp": 1543572262558,"responseTimeMillis": 1717}]}]}]}
Response code
204
Result
Highlight shows parameters, submitted in the request.