Skip to content

Add DNS specs for Cloud Network Monitoring API #30523

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .apigentools-info
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"spec_versions": {
"v1": {
"apigentools_version": "1.6.6",
"regenerated": "2025-07-18 16:54:27.438110",
"spec_repo_commit": "0f24b8e5"
"regenerated": "2025-07-18 18:38:48.484484",
"spec_repo_commit": "f47d1c2f"
},
"v2": {
"apigentools_version": "1.6.6",
"regenerated": "2025-07-18 16:54:36.732989",
"spec_repo_commit": "0f24b8e5"
"regenerated": "2025-07-18 18:38:57.874179",
"spec_repo_commit": "f47d1c2f"
}
}
}
13 changes: 13 additions & 0 deletions config/_default/menus/api.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6248,6 +6248,19 @@ menu:
url: /api/latest/cloud-network-monitoring/
identifier: cloud-network-monitoring
generated: true
- name: Get all aggregated DNS traffic
url: '#get-all-aggregated-dns-traffic'
identifier: cloud-network-monitoring-get-all-aggregated-dns-traffic
parent: cloud-network-monitoring
generated: true
params:
versions:
- v2
operationids:
- GetAggregatedDns
unstable:
- v2
order: 2
- name: Get all aggregated connections
url: '#get-all-aggregated-connections'
identifier: cloud-network-monitoring-get-all-aggregated-connections
Expand Down
52 changes: 52 additions & 0 deletions content/en/api/v2/cloud-network-monitoring/examples.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,57 @@
"json": {},
"html": ""
}
},
"GetAggregatedDns": {
"responses": {
"200": {
"json": {
"data": [
{
"attributes": {
"group_bys": [
{
"key": "network.dns_query",
"value": {
"<any-key>": []
}
}
],
"metrics": [
{
"key": "dns_failure_latency_percentile",
"value": 75
}
]
},
"id": "client_service:example-service,network.dns_query:example.com",
"type": "aggregated_dns"
}
]
},
"html": "<div class=\"\"><div class=\"row hasChildData \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row js-collapse-trigger collapse-trigger \">\n <div class=\"col-4 column\">\n <p class=\"key\"><span class=\"toggle-arrow\"><svg width=\"6\" height=\"9\" viewBox=\"0 0 6 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.7294 4.45711L0.733399 7.82311L1.1294 8.29111L5.6654 4.45711L1.1294 0.641113L0.751398 1.12711L4.7294 4.45711Z\" fill=\"black\"/></svg></span> data</p>\n </div>\n <div class=\"col-2 column\"><p>[object]</p></div>\n <div class=\"col-6 column\"><p>Array of aggregated DNS objects.</p></div>\n </div>\n <div class=\"row isNested d-none hasChildData \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row js-collapse-trigger collapse-trigger \">\n <div class=\"col-4 column\">\n <p class=\"key\"><span class=\"toggle-arrow\"><svg width=\"6\" height=\"9\" viewBox=\"0 0 6 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.7294 4.45711L0.733399 7.82311L1.1294 8.29111L5.6654 4.45711L1.1294 0.641113L0.751398 1.12711L4.7294 4.45711Z\" fill=\"black\"/></svg></span> attributes</p>\n </div>\n <div class=\"col-2 column\"><p>object</p></div>\n <div class=\"col-6 column\"><p>Attributes for an aggregated DNS flow.</p></div>\n </div>\n <div class=\"row isNested d-none hasChildData \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row js-collapse-trigger collapse-trigger \">\n <div class=\"col-4 column\">\n <p class=\"key\"><span class=\"toggle-arrow\"><svg width=\"6\" height=\"9\" viewBox=\"0 0 6 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.7294 4.45711L0.733399 7.82311L1.1294 8.29111L5.6654 4.45711L1.1294 0.641113L0.751398 1.12711L4.7294 4.45711Z\" fill=\"black\"/></svg></span> group_bys</p>\n </div>\n <div class=\"col-2 column\"><p>[object]</p></div>\n <div class=\"col-6 column\"><p>The key, value pairs for each group by.</p></div>\n </div>\n <div class=\"row isNested d-none \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">key</p>\n </div>\n <div class=\"col-2 column\"><p>string</p></div>\n <div class=\"col-6 column\"><p>The group by key.</p></div>\n </div>\n \n </div>\n </div><div class=\"row isNested d-none hasChildData \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row js-collapse-trigger collapse-trigger \">\n <div class=\"col-4 column\">\n <p class=\"key\"><span class=\"toggle-arrow\"><svg width=\"6\" height=\"9\" viewBox=\"0 0 6 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.7294 4.45711L0.733399 7.82311L1.1294 8.29111L5.6654 4.45711L1.1294 0.641113L0.751398 1.12711L4.7294 4.45711Z\" fill=\"black\"/></svg></span> value</p>\n </div>\n <div class=\"col-2 column\"><p></p></div>\n <div class=\"col-6 column\"><p>The group by value.</p></div>\n </div>\n <div class=\"row isNested d-none \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">&lt;any-key&gt;</p>\n </div>\n <div class=\"col-2 column\"><p>[string]</p></div>\n <div class=\"col-6 column\"></div>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n </div>\n </div><div class=\"row isNested d-none hasChildData \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row js-collapse-trigger collapse-trigger \">\n <div class=\"col-4 column\">\n <p class=\"key\"><span class=\"toggle-arrow\"><svg width=\"6\" height=\"9\" viewBox=\"0 0 6 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.7294 4.45711L0.733399 7.82311L1.1294 8.29111L5.6654 4.45711L1.1294 0.641113L0.751398 1.12711L4.7294 4.45711Z\" fill=\"black\"/></svg></span> metrics</p>\n </div>\n <div class=\"col-2 column\"><p>[object]</p></div>\n <div class=\"col-6 column\"><p>Metrics associated with an aggregated DNS flow.</p></div>\n </div>\n <div class=\"row isNested d-none \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">key</p>\n </div>\n <div class=\"col-2 column\"><p>enum</p></div>\n <div class=\"col-6 column\"><p>The metric key for DNS metrics. \nAllowed enum values: <code>dns_total_requests,dns_failures,dns_successful_responses,dns_failed_responses,dns_timeouts,dns_responses.nxdomain,dns_responses.servfail,dns_responses.other,dns_success_latency_percentile,dns_failure_latency_percentile</code></p></div>\n </div>\n \n </div>\n </div><div class=\"row isNested d-none \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">value</p>\n </div>\n <div class=\"col-2 column\"><p>int64</p></div>\n <div class=\"col-6 column\"><p>The metric value.</p></div>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n </div>\n </div><div class=\"row isNested d-none \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">id</p>\n </div>\n <div class=\"col-2 column\"><p>string</p></div>\n <div class=\"col-6 column\"><p>A unique identifier for the aggregated DNS traffic based on the group by values.</p></div>\n </div>\n \n </div>\n </div><div class=\"row isNested d-none \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">type</p>\n </div>\n <div class=\"col-2 column\"><p>enum</p></div>\n <div class=\"col-6 column\"><p>Aggregated DNS resource type. \nAllowed enum values: <code>aggregated_dns</code></p><p>default: <code>aggregated_dns</code></p></div>\n </div>\n \n </div>\n </div>\n </div>\n </div></div>"
},
"400": {
"json": {
"errors": [
"Bad Request"
]
},
"html": "<div class=\"\"><div class=\"row \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">errors&nbsp;[<em>required</em>]</p>\n </div>\n <div class=\"col-2 column\"><p>[string]</p></div>\n <div class=\"col-6 column\"><p>A list of errors.</p></div>\n </div>\n \n </div>\n </div></div>"
},
"429": {
"json": {
"errors": [
"Bad Request"
]
},
"html": "<div class=\"\"><div class=\"row \">\n <div class=\"col-12 first-column\">\n <div class=\"row first-row \">\n <div class=\"col-4 column\">\n <p class=\"key\">errors&nbsp;[<em>required</em>]</p>\n </div>\n <div class=\"col-2 column\"><p>[string]</p></div>\n <div class=\"col-6 column\"><p>A list of errors.</p></div>\n </div>\n \n </div>\n </div></div>"
}
},
"request": {
"json_curl": {},
"json": {},
"html": ""
}
}
}
230 changes: 229 additions & 1 deletion data/api/v2/full_spec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12789,6 +12789,42 @@ components:
description: The type of the resource. The value should always be device.
type: string
type: object
DnsMetricKey:
description: The metric key for DNS metrics.
enum:
- dns_total_requests
- dns_failures
- dns_successful_responses
- dns_failed_responses
- dns_timeouts
- dns_responses.nxdomain
- dns_responses.servfail
- dns_responses.other
- dns_success_latency_percentile
- dns_failure_latency_percentile
type: string
x-enum-descriptions:
- The total number of DNS requests made by the client.
- The total number of timeouts and errors in DNS requests.
- The total number of successful DNS responses.
- The total number of failed DNS responses.
- The total number of DNS timeouts.
- The total number of DNS responses with the NXDOMAIN error code.
- The total number of DNS responses with the SERVFAIL error code.
- The total number of DNS responses with other error codes.
- The latency percentile for successful DNS responses.
- The latency percentile for failed DNS responses.
x-enum-varnames:
- DNS_TOTAL_REQUESTS
- DNS_FAILURES
- DNS_SUCCESSFUL_RESPONSES
- DNS_FAILED_RESPONSES
- DNS_TIMEOUTS
- DNS_RESPONSES_NXDOMAIN
- DNS_RESPONSES_SERVFAIL
- DNS_RESPONSES_OTHER
- DNS_SUCCESS_LATENCY_PERCENTILE
- DNS_FAILURE_LATENCY_PERCENTILE
DomainAllowlist:
description: The email domain allowlist for an org.
properties:
Expand Down Expand Up @@ -39059,6 +39095,131 @@ components:
type: string
x-enum-varnames:
- AGGREGATED_CONNECTION
SingleAggregatedDnsResponseArray:
description: List of aggregated DNS flows.
example:
data:
- attributes:
group_bys:
- key: client_team
value: networks
- key: server_service
value: hucklebuck
metrics:
- key: dns_total_requests
value: 100
- key: dns_failures
value: 6
- key: dns_successful_responses
value: 95
- key: dns_failed_responses
value: 4
- key: dns_timeouts
value: 2
- key: dns_responses.nxdomain
value: 1
- key: dns_responses.servfail
value: 1
- key: dns_responses.other
value: 3
- key: dns_success_latency_percentile
value: 50
- key: dns_failure_latency_percentile
value: 75
id: client_team:networks, server_service:hucklebuck
type: aggregated_dns
properties:
data:
description: Array of aggregated DNS objects.
items:
$ref: '#/components/schemas/SingleAggregatedDnsResponseData'
type: array
type: object
SingleAggregatedDnsResponseData:
description: Object describing an aggregated DNS flow.
properties:
attributes:
$ref: '#/components/schemas/SingleAggregatedDnsResponseDataAttributes'
id:
description: A unique identifier for the aggregated DNS traffic based on
the group by values.
example: client_service:example-service,network.dns_query:example.com
type: string
type:
$ref: '#/components/schemas/SingleAggregatedDnsResponseDataType'
example: aggregated_dns
type: object
SingleAggregatedDnsResponseDataAttributes:
description: Attributes for an aggregated DNS flow.
properties:
group_bys:
description: The key, value pairs for each group by.
example:
- key: client_service
value: example-service
- key: network.dns_query
value: example.com
items:
$ref: '#/components/schemas/SingleAggregatedDnsResponseDataAttributesGroupByItems'
type: array
metrics:
description: Metrics associated with an aggregated DNS flow.
example:
- key: dns_total_requests
value: 100
- key: dns_failures
value: 7
- key: dns_successful_responses
value: 93
- key: dns_failed_responses
value: 5
- key: dns_timeouts
value: 2
- key: dns_responses.nxdomain
value: 1
- key: dns_responses.servfail
value: 1
- key: dns_responses.other
value: 3
- key: dns_success_latency_percentile
value: 50
- key: dns_failure_latency_percentile
value: 75
items:
$ref: '#/components/schemas/SingleAggregatedDnsResponseDataAttributesMetricsItems'
type: array
type: object
SingleAggregatedDnsResponseDataAttributesGroupByItems:
description: Attributes associated with a group by
properties:
key:
description: The group by key.
type: string
value:
additionalProperties:
items:
type: string
type: array
description: The group by value.
type: object
SingleAggregatedDnsResponseDataAttributesMetricsItems:
description: Metrics associated with an aggregated DNS flow.
properties:
key:
$ref: '#/components/schemas/DnsMetricKey'
value:
description: The metric value.
format: int64
type: integer
type: object
SingleAggregatedDnsResponseDataType:
default: aggregated_dns
description: Aggregated DNS resource type.
enum:
- aggregated_dns
type: string
x-enum-varnames:
- AGGREGATED_DNS
SlackIntegrationMetadata:
description: Incident integration metadata for the Slack integration.
properties:
Expand Down Expand Up @@ -57562,6 +57723,72 @@ paths:
x-unstable: '**Note**: This endpoint is in Preview. If you have any feedback,

contact [Datadog support](https://docs.datadoghq.com/help/).'
/api/v2/network/dns/aggregate:
get:
description: Get all aggregated DNS traffic.
operationId: GetAggregatedDns
parameters:
- description: Unix timestamp (number of seconds since epoch) of the start of
the query window. If not provided, the start of the query window is 15 minutes
before the `to` timestamp. If neither `from` nor `to` are provided, the
query window is `[now - 15m, now]`.
in: query
name: from
schema:
format: int64
type: integer
- description: Unix timestamp (number of seconds since epoch) of the end of
the query window. If not provided, the end of the query window is the current
time. If neither `from` nor `to` are provided, the query window is `[now
- 15m, now]`.
in: query
name: to
schema:
format: int64
type: integer
- description: Comma-separated list of fields to group DNS traffic by. The server
side defaults to `network.dns_query` if unspecified. `server_ungrouped`
may be used if groups are not desired. The maximum number of group_by(s)
is 10.
in: query
name: group_by
schema:
type: string
- description: Comma-separated list of tags to filter DNS traffic by.
in: query
name: tags
schema:
type: string
- description: The number of aggregated DNS entries to be returned. The maximum
value is 7500.
in: query
name: limit
schema:
default: 100
format: int32
maximum: 7500
minimum: 1
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SingleAggregatedDnsResponseArray'
description: OK
'400':
$ref: '#/components/responses/BadRequestResponse'
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
summary: Get all aggregated DNS traffic
tags:
- Cloud Network Monitoring
x-menu-order: 2
x-undo:
type: safe
x-unstable: '**Note**: This endpoint is in Preview. If you have any feedback,

contact [Datadog support](https://docs.datadoghq.com/help/).'
/api/v2/on-call/escalation-policies:
post:
description: Create a new On-Call escalation policy
Expand Down Expand Up @@ -70287,7 +70514,8 @@ tags:
documentation](https://docs.datadoghq.com/cloud_cost_management/).
name: Cloud Cost Management
- description: The Cloud Network Monitoring API allows you to fetch aggregated connections
and their attributes. See the [Cloud Network Monitoring page](https://docs.datadoghq.com/network_monitoring/cloud_network_monitoring/)
and DNS traffic with their attributes. See the [Cloud Network Monitoring page](https://docs.datadoghq.com/network_monitoring/cloud_network_monitoring/)
and [DNS Monitoring page](https://docs.datadoghq.com/network_monitoring/dns/)
for more information.
name: Cloud Network Monitoring
- description: Manage your Datadog Cloudflare integration directly through the Datadog
Expand Down
Loading
Loading