There is no API for that type of reporting, the only 'report' focused API is for managing the configuration of report subscriptions: https://www.dynatrace.com/support/help/how-to-use-dynatrace/dashboards-and-charts/dashboards/subscri...
What you can make use of though is the Metrics V2 API to read metric data (all metrics chartable in Dynatrace are available) and feed that to a reporting tool or build reporting off of that some other way.
If you haven't used it before I would check out and get familiar with the API Explorer in the UI. It makes it easier to play with the endpoints and fields you send and especially nice is it will also show you what the formatted curl command will look like as an example.
As a simple metric selector in the metrics V2 query API:
Place that in the metricSelector field:
Run it and at the bottom you should see the resulting json as well as the request that was sent and a curl example:
curl -X GET "https://<dynatrace_hostname>/api/v2/metrics/query?metricSelector=builtin%3Asynthetic.browser.availability.location.total%3AsplitBy%28%22dt.entity.synthetic_test%22%2C%22dt.entity.geolocation%22%29" -H "accept: application/json; charset=utf-8" -H "Authorization: Api-Token <token_with_proper_permissions>"
James, may i know why you are passing "AsplitBy%28%22dt.entity.synthetic_test%22%2C%22dt.entity.geolocation%22%2"
in metric selector? I am using below query to get availability metrics from a management zone,
curl --location --request GET
--header 'accept: application/json; charset=utf-8' \
is there a way to pass multiple managementzones and monitor types in a single request? Also i was asked to use merge transformation in query to get the exact metrics like it shows in dynatrace APP. can you explain how to pass merge transformers in above query as well?
I was just using a basic metric selector to show all test availability split by test name and location. You have a lot of control over how the data is filtered, organized, and aggregated using the metric selectors. I would read through their documentation to get familiar with what is possible. The API also has an entitySelector field where you can apply additional filters on top of the query to limit which entities (e.g. synthetic tests) are included when querying.
You can try these entity selectors first to test and make sure you get the data you want in the Data Explorer using the 'code' tab as well. Once you get it working you can plug the query into the API.