# Radar DNS
## Get DNS queries by cache status summary
**GET** `/radar/dns/summary/cache_hit`
Retrieves the distribution of DNS queries by cache status.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"NEGATIVE": "*string*",
"POSITIVE": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by DNSSEC support summary
**GET** `/radar/dns/summary/dnssec`
Retrieves the distribution of DNS responses by DNSSEC (DNS Security Extensions) support.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"INSECURE": "*string*",
"INVALID": "*string*",
"OTHER": "*string*",
"SECURE": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by DNSSEC awareness summary
**GET** `/radar/dns/summary/dnssec_aware`
Retrieves the distribution of DNS queries by DNSSEC (DNS Security Extensions) client awareness.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"NOT_SUPPORTED": "*string*",
"SUPPORTED": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by DNSSEC end-to-end summary
**GET** `/radar/dns/summary/dnssec_e2e`
Retrieves the distribution of DNSSEC-validated answers by end-to-end security status.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"NEGATIVE": "*string*",
"POSITIVE": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by IP version summary
**GET** `/radar/dns/summary/ip_version`
Retrieves the distribution of DNS queries by IP version.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"IPv4": "*string*",
"IPv6": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by matching answer summary
**GET** `/radar/dns/summary/matching_answer`
Retrieves the distribution of DNS queries by matching answers.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"NEGATIVE": "*string*",
"POSITIVE": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by protocol summary
**GET** `/radar/dns/summary/protocol`
Retrieves the distribution of DNS queries by DNS transport protocol.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"HTTPS": "*string*",
"TCP": "*string*",
"TLS": "*string*",
"UDP": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by type summary
**GET** `/radar/dns/summary/query_type`
Retrieves the distribution of DNS queries by type.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by response code summary
**GET** `/radar/dns/summary/response_code`
Retrieves the distribution of DNS queries by response code.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by response TTL summary
**GET** `/radar/dns/summary/response_ttl`
Retrieves the distribution of DNS queries by minimum response TTL.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {
"gt_15m_lte_1h": "*string*",
"gt_1d_lte_1w": "*string*",
"gt_1h_lte_1d": "*string*",
"gt_1m_lte_5m": "*string*",
"gt_1w": "*string*",
"gt_5m_lte_15m": "*string*",
"lte_1m": "*string*"
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS summary by dimension
**GET** `/radar/dns/summary/{dimension}`
Retrieves the distribution of DNS queries by the specified dimension.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"summary_0": {}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries time series
**GET** `/radar/dns/timeseries`
Retrieves normalized query volume to the 1.1.1.1 DNS resolver over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by cache status time series
**GET** `/radar/dns/timeseries_groups/cache_hit`
Retrieves the distribution of DNS queries by cache status over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"NEGATIVE": [
"*string*"
],
"POSITIVE": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by DNSSEC support time series
**GET** `/radar/dns/timeseries_groups/dnssec`
Retrieves the distribution of DNS responses by DNSSEC (DNS Security Extensions) support over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"INSECURE": [
"*string*"
],
"INVALID": [
"*string*"
],
"OTHER": [
"*string*"
],
"SECURE": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by DNSSEC awareness time series
**GET** `/radar/dns/timeseries_groups/dnssec_aware`
Retrieves the distribution of DNS queries by DNSSEC (DNS Security Extensions) client awareness over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"NOT_SUPPORTED": [
"*string*"
],
"SUPPORTED": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by DNSSEC end-to-end time series
**GET** `/radar/dns/timeseries_groups/dnssec_e2e`
Retrieves the distribution of DNSSEC-validated answers by end-to-end security status over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"NEGATIVE": [
"*string*"
],
"POSITIVE": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by IP version time series
**GET** `/radar/dns/timeseries_groups/ip_version`
Retrieves the distribution of DNS queries by IP version over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"IPv4": [
"*string*"
],
"IPv6": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by matching answer time series
**GET** `/radar/dns/timeseries_groups/matching_answer`
Retrieves the distribution of DNS queries by matching answers over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"NEGATIVE": [
"*string*"
],
"POSITIVE": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by protocol time series
**GET** `/radar/dns/timeseries_groups/protocol`
Retrieves the distribution of DNS queries by DNS transport protocol over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"HTTPS": [
"*string*"
],
"TCP": [
"*string*"
],
"TLS": [
"*string*"
],
"UDP": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by type time series
**GET** `/radar/dns/timeseries_groups/query_type`
Retrieves the distribution of DNS queries by type over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"timestamps": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by response code time series
**GET** `/radar/dns/timeseries_groups/response_code`
Retrieves the distribution of DNS queries by response code over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"timestamps": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS queries by response TTL time series
**GET** `/radar/dns/timeseries_groups/response_ttl`
Retrieves the distribution of DNS queries by minimum answer TTL over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"gt_15m_lte_1h": [
"*string*"
],
"gt_1d_lte_1w": [
"*string*"
],
"gt_1h_lte_1d": [
"*string*"
],
"gt_1m_lte_5m": [
"*string*"
],
"gt_1w": [
"*string*"
],
"gt_5m_lte_15m": [
"*string*"
],
"lte_1m": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get DNS time series grouped by dimension
**GET** `/radar/dns/timeseries_groups/{dimension}`
Retrieves the distribution of DNS queries grouped by dimension over time.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"aggInterval": "*string*",
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"serie_0": {
"timestamps": [
"*string*"
]
}
}
```
#### 400 Bad request.
```json
{
"errors": [
{
"message": "*string*"
}
],
"result": {},
"success": "*boolean*"
}
```
## Get top ASes by DNS queries
**GET** `/radar/dns/top/ases`
Retrieves the top autonomous systems by DNS queries made to 1.1.1.1 DNS resolver.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"top_0": [
{
"clientASN": "*integer*",
"clientASName": "*string*",
"value": "*string*"
}
]
}
```
#### 404 Not found.
```json
{
"error": "*string*"
}
```
## Get top locations by DNS queries
**GET** `/radar/dns/top/locations`
Retrieves the top locations by DNS queries made to 1.1.1.1 DNS resolver.
### Responses
#### 200 Successful response.
> Data is at `body["result"]`
```json
{
"meta": {
"confidenceInfo": {
"annotations": [
{
"dataSource": "*string*",
"description": "*string*",
"endDate": "*string*",
"eventType": "*string*",
"isInstantaneous": "*boolean*",
"linkedUrl": "*string*",
"startDate": "*string*"
}
],
"level": "*integer*"
},
"dateRange": [
{
"endTime": "*string*",
"startTime": "*string*"
}
],
"lastUpdated": "*string*",
"normalization": "*string*",
"units": [
{
"name": "*string*",
"value": "*string*"
}
]
},
"top_0": [
{
"clientCountryAlpha2": "*string*",
"clientCountryName": "*string*",
"value": "*string*"
}
]
}
```
#### 404 Not found.
```json
{
"error": "*string*"
}
```