Skip to content

Commit 1e3d7a5

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add apm_metrics query support to dashboard OpenAPI spec (#3615)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 950e950 commit 1e3d7a5

File tree

10 files changed

+1092
-6
lines changed

10 files changed

+1092
-6
lines changed

.generator/schemas/v1/openapi.yaml

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2709,6 +2709,123 @@ components:
27092709
- service
27102710
- name
27112711
type: object
2712+
FormulaAndFunctionApmMetricStatName:
2713+
description: APM metric stat name.
2714+
enum:
2715+
- errors
2716+
- error_rate
2717+
- errors_per_second
2718+
- latency_avg
2719+
- latency_max
2720+
- latency_p50
2721+
- latency_p75
2722+
- latency_p90
2723+
- latency_p95
2724+
- latency_p99
2725+
- latency_p999
2726+
- latency_distribution
2727+
- hits
2728+
- hits_per_second
2729+
- total_time
2730+
- apdex
2731+
example: "hits"
2732+
type: string
2733+
x-enum-varnames:
2734+
- ERRORS
2735+
- ERROR_RATE
2736+
- ERRORS_PER_SECOND
2737+
- LATENCY_AVG
2738+
- LATENCY_MAX
2739+
- LATENCY_P50
2740+
- LATENCY_P75
2741+
- LATENCY_P90
2742+
- LATENCY_P95
2743+
- LATENCY_P99
2744+
- LATENCY_P999
2745+
- LATENCY_DISTRIBUTION
2746+
- HITS
2747+
- HITS_PER_SECOND
2748+
- TOTAL_TIME
2749+
- APDEX
2750+
FormulaAndFunctionApmMetricsDataSource:
2751+
description: Data source for APM metrics queries.
2752+
enum:
2753+
- apm_metrics
2754+
example: apm_metrics
2755+
type: string
2756+
x-enum-varnames:
2757+
- APM_METRICS
2758+
FormulaAndFunctionApmMetricsQueryDefinition:
2759+
description: A formula and functions APM metrics query.
2760+
properties:
2761+
data_source:
2762+
$ref: "#/components/schemas/FormulaAndFunctionApmMetricsDataSource"
2763+
group_by:
2764+
description: Optional fields to group the query results by.
2765+
items:
2766+
description: A field to group results by.
2767+
example: "resource_name"
2768+
type: string
2769+
type: array
2770+
name:
2771+
description: Name of this query to use in formulas.
2772+
example: "query_errors"
2773+
type: string
2774+
operation_mode:
2775+
description: Optional operation mode to aggregate across operation names.
2776+
example: "primary"
2777+
type: string
2778+
operation_name:
2779+
description: Name of operation on service. If not provided, the primary operation name is used.
2780+
example: "web.request"
2781+
type: string
2782+
peer_tags:
2783+
description: Tags to query for a specific downstream entity (peer.service, peer.db_instance, peer.s3, peer.s3.bucket, etc.).
2784+
items:
2785+
example: "peer.service:my-service"
2786+
type: string
2787+
type: array
2788+
query_filter:
2789+
description: Additional filters for the query using metrics query syntax (e.g., env, primary_tag).
2790+
example: "env:prod"
2791+
type: string
2792+
resource_hash:
2793+
description: The hash of a specific resource to filter by.
2794+
example: "abc123"
2795+
type: string
2796+
resource_name:
2797+
description: The full name of a specific resource to filter by.
2798+
example: "GET /api/v1/users"
2799+
type: string
2800+
service:
2801+
description: APM service name.
2802+
example: "web-store"
2803+
type: string
2804+
span_kind:
2805+
$ref: "#/components/schemas/FormulaAndFunctionApmMetricsSpanKind"
2806+
stat:
2807+
$ref: "#/components/schemas/FormulaAndFunctionApmMetricStatName"
2808+
required:
2809+
- data_source
2810+
- name
2811+
- stat
2812+
type: object
2813+
FormulaAndFunctionApmMetricsSpanKind:
2814+
description: Describes the relationship between the span, its parents, and its children in a trace.
2815+
enum:
2816+
- consumer
2817+
- server
2818+
- client
2819+
- producer
2820+
- internal
2821+
example: "server"
2822+
type: string
2823+
x-enum-varnames:
2824+
- CONSUMER
2825+
- SERVER
2826+
- CLIENT
2827+
- PRODUCER
2828+
- INTERNAL
27122829
FormulaAndFunctionApmResourceStatName:
27132830
description: APM resource stat name.
27142831
enum:
@@ -3138,6 +3255,7 @@ components:
31383255
- $ref: "#/components/schemas/FormulaAndFunctionProcessQueryDefinition"
31393256
- $ref: "#/components/schemas/FormulaAndFunctionApmDependencyStatsQueryDefinition"
31403257
- $ref: "#/components/schemas/FormulaAndFunctionApmResourceStatsQueryDefinition"
3258+
- $ref: "#/components/schemas/FormulaAndFunctionApmMetricsQueryDefinition"
31413259
- $ref: "#/components/schemas/FormulaAndFunctionSLOQueryDefinition"
31423260
- $ref: "#/components/schemas/FormulaAndFunctionCloudCostQueryDefinition"
31433261
FormulaAndFunctionResponseFormat:
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
// Create a new dashboard with apm metrics widget
2+
3+
import com.datadog.api.client.ApiClient;
4+
import com.datadog.api.client.ApiException;
5+
import com.datadog.api.client.v1.api.DashboardsApi;
6+
import com.datadog.api.client.v1.model.Dashboard;
7+
import com.datadog.api.client.v1.model.DashboardLayoutType;
8+
import com.datadog.api.client.v1.model.FormulaAndFunctionApmMetricStatName;
9+
import com.datadog.api.client.v1.model.FormulaAndFunctionApmMetricsDataSource;
10+
import com.datadog.api.client.v1.model.FormulaAndFunctionApmMetricsQueryDefinition;
11+
import com.datadog.api.client.v1.model.FormulaAndFunctionQueryDefinition;
12+
import com.datadog.api.client.v1.model.FormulaAndFunctionResponseFormat;
13+
import com.datadog.api.client.v1.model.TableWidgetDefinition;
14+
import com.datadog.api.client.v1.model.TableWidgetDefinitionType;
15+
import com.datadog.api.client.v1.model.TableWidgetRequest;
16+
import com.datadog.api.client.v1.model.Widget;
17+
import com.datadog.api.client.v1.model.WidgetDefinition;
18+
import com.datadog.api.client.v1.model.WidgetLayout;
19+
import com.datadog.api.client.v1.model.WidgetTextAlign;
20+
import java.util.Collections;
21+
22+
public class Example {
23+
public static void main(String[] args) {
24+
ApiClient defaultClient = ApiClient.getDefaultApiClient();
25+
DashboardsApi apiInstance = new DashboardsApi(defaultClient);
26+
27+
Dashboard body =
28+
new Dashboard()
29+
.title("Example-Dashboard")
30+
.widgets(
31+
Collections.singletonList(
32+
new Widget()
33+
.definition(
34+
new WidgetDefinition(
35+
new TableWidgetDefinition()
36+
.title("")
37+
.titleSize("16")
38+
.titleAlign(WidgetTextAlign.LEFT)
39+
.type(TableWidgetDefinitionType.QUERY_TABLE)
40+
.requests(
41+
Collections.singletonList(
42+
new TableWidgetRequest()
43+
.responseFormat(
44+
FormulaAndFunctionResponseFormat.SCALAR)
45+
.queries(
46+
Collections.singletonList(
47+
new FormulaAndFunctionQueryDefinition(
48+
new FormulaAndFunctionApmMetricsQueryDefinition()
49+
.stat(
50+
FormulaAndFunctionApmMetricStatName
51+
.HITS)
52+
.name("query1")
53+
.service("web-store")
54+
.dataSource(
55+
FormulaAndFunctionApmMetricsDataSource
56+
.APM_METRICS)
57+
.queryFilter("env:prod")
58+
.groupBy(
59+
Collections.singletonList(
60+
"resource_name")))))))))
61+
.layout(new WidgetLayout().x(0L).y(0L).width(4L).height(4L))))
62+
.layoutType(DashboardLayoutType.ORDERED);
63+
64+
try {
65+
Dashboard result = apiInstance.createDashboard(body);
66+
System.out.println(result);
67+
} catch (ApiException e) {
68+
System.err.println("Exception when calling DashboardsApi#createDashboard");
69+
System.err.println("Status code: " + e.getCode());
70+
System.err.println("Reason: " + e.getResponseBody());
71+
System.err.println("Response headers: " + e.getResponseHeaders());
72+
e.printStackTrace();
73+
}
74+
}
75+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2019-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.api.client.v1.model;
8+
9+
import com.datadog.api.client.ModelEnum;
10+
import com.fasterxml.jackson.annotation.JsonCreator;
11+
import com.fasterxml.jackson.core.JsonGenerator;
12+
import com.fasterxml.jackson.core.JsonProcessingException;
13+
import com.fasterxml.jackson.databind.SerializerProvider;
14+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
15+
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
16+
import java.io.IOException;
17+
import java.util.Arrays;
18+
import java.util.HashSet;
19+
import java.util.Set;
20+
21+
/** APM metric stat name. */
22+
@JsonSerialize(
23+
using = FormulaAndFunctionApmMetricStatName.FormulaAndFunctionApmMetricStatNameSerializer.class)
24+
public class FormulaAndFunctionApmMetricStatName extends ModelEnum<String> {
25+
26+
private static final Set<String> allowedValues =
27+
new HashSet<String>(
28+
Arrays.asList(
29+
"errors",
30+
"error_rate",
31+
"errors_per_second",
32+
"latency_avg",
33+
"latency_max",
34+
"latency_p50",
35+
"latency_p75",
36+
"latency_p90",
37+
"latency_p95",
38+
"latency_p99",
39+
"latency_p999",
40+
"latency_distribution",
41+
"hits",
42+
"hits_per_second",
43+
"total_time",
44+
"apdex"));
45+
46+
public static final FormulaAndFunctionApmMetricStatName ERRORS =
47+
new FormulaAndFunctionApmMetricStatName("errors");
48+
public static final FormulaAndFunctionApmMetricStatName ERROR_RATE =
49+
new FormulaAndFunctionApmMetricStatName("error_rate");
50+
public static final FormulaAndFunctionApmMetricStatName ERRORS_PER_SECOND =
51+
new FormulaAndFunctionApmMetricStatName("errors_per_second");
52+
public static final FormulaAndFunctionApmMetricStatName LATENCY_AVG =
53+
new FormulaAndFunctionApmMetricStatName("latency_avg");
54+
public static final FormulaAndFunctionApmMetricStatName LATENCY_MAX =
55+
new FormulaAndFunctionApmMetricStatName("latency_max");
56+
public static final FormulaAndFunctionApmMetricStatName LATENCY_P50 =
57+
new FormulaAndFunctionApmMetricStatName("latency_p50");
58+
public static final FormulaAndFunctionApmMetricStatName LATENCY_P75 =
59+
new FormulaAndFunctionApmMetricStatName("latency_p75");
60+
public static final FormulaAndFunctionApmMetricStatName LATENCY_P90 =
61+
new FormulaAndFunctionApmMetricStatName("latency_p90");
62+
public static final FormulaAndFunctionApmMetricStatName LATENCY_P95 =
63+
new FormulaAndFunctionApmMetricStatName("latency_p95");
64+
public static final FormulaAndFunctionApmMetricStatName LATENCY_P99 =
65+
new FormulaAndFunctionApmMetricStatName("latency_p99");
66+
public static final FormulaAndFunctionApmMetricStatName LATENCY_P999 =
67+
new FormulaAndFunctionApmMetricStatName("latency_p999");
68+
public static final FormulaAndFunctionApmMetricStatName LATENCY_DISTRIBUTION =
69+
new FormulaAndFunctionApmMetricStatName("latency_distribution");
70+
public static final FormulaAndFunctionApmMetricStatName HITS =
71+
new FormulaAndFunctionApmMetricStatName("hits");
72+
public static final FormulaAndFunctionApmMetricStatName HITS_PER_SECOND =
73+
new FormulaAndFunctionApmMetricStatName("hits_per_second");
74+
public static final FormulaAndFunctionApmMetricStatName TOTAL_TIME =
75+
new FormulaAndFunctionApmMetricStatName("total_time");
76+
public static final FormulaAndFunctionApmMetricStatName APDEX =
77+
new FormulaAndFunctionApmMetricStatName("apdex");
78+
79+
FormulaAndFunctionApmMetricStatName(String value) {
80+
super(value, allowedValues);
81+
}
82+
83+
public static class FormulaAndFunctionApmMetricStatNameSerializer
84+
extends StdSerializer<FormulaAndFunctionApmMetricStatName> {
85+
public FormulaAndFunctionApmMetricStatNameSerializer(
86+
Class<FormulaAndFunctionApmMetricStatName> t) {
87+
super(t);
88+
}
89+
90+
public FormulaAndFunctionApmMetricStatNameSerializer() {
91+
this(null);
92+
}
93+
94+
@Override
95+
public void serialize(
96+
FormulaAndFunctionApmMetricStatName value, JsonGenerator jgen, SerializerProvider provider)
97+
throws IOException, JsonProcessingException {
98+
jgen.writeObject(value.value);
99+
}
100+
}
101+
102+
@JsonCreator
103+
public static FormulaAndFunctionApmMetricStatName fromValue(String value) {
104+
return new FormulaAndFunctionApmMetricStatName(value);
105+
}
106+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2019-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.api.client.v1.model;
8+
9+
import com.datadog.api.client.ModelEnum;
10+
import com.fasterxml.jackson.annotation.JsonCreator;
11+
import com.fasterxml.jackson.core.JsonGenerator;
12+
import com.fasterxml.jackson.core.JsonProcessingException;
13+
import com.fasterxml.jackson.databind.SerializerProvider;
14+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
15+
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
16+
import java.io.IOException;
17+
import java.util.Arrays;
18+
import java.util.HashSet;
19+
import java.util.Set;
20+
21+
/** Data source for APM metrics queries. */
22+
@JsonSerialize(
23+
using =
24+
FormulaAndFunctionApmMetricsDataSource.FormulaAndFunctionApmMetricsDataSourceSerializer
25+
.class)
26+
public class FormulaAndFunctionApmMetricsDataSource extends ModelEnum<String> {
27+
28+
private static final Set<String> allowedValues =
29+
new HashSet<String>(Arrays.asList("apm_metrics"));
30+
31+
public static final FormulaAndFunctionApmMetricsDataSource APM_METRICS =
32+
new FormulaAndFunctionApmMetricsDataSource("apm_metrics");
33+
34+
FormulaAndFunctionApmMetricsDataSource(String value) {
35+
super(value, allowedValues);
36+
}
37+
38+
public static class FormulaAndFunctionApmMetricsDataSourceSerializer
39+
extends StdSerializer<FormulaAndFunctionApmMetricsDataSource> {
40+
public FormulaAndFunctionApmMetricsDataSourceSerializer(
41+
Class<FormulaAndFunctionApmMetricsDataSource> t) {
42+
super(t);
43+
}
44+
45+
public FormulaAndFunctionApmMetricsDataSourceSerializer() {
46+
this(null);
47+
}
48+
49+
@Override
50+
public void serialize(
51+
FormulaAndFunctionApmMetricsDataSource value,
52+
JsonGenerator jgen,
53+
SerializerProvider provider)
54+
throws IOException, JsonProcessingException {
55+
jgen.writeObject(value.value);
56+
}
57+
}
58+
59+
@JsonCreator
60+
public static FormulaAndFunctionApmMetricsDataSource fromValue(String value) {
61+
return new FormulaAndFunctionApmMetricsDataSource(value);
62+
}
63+
}

0 commit comments

Comments
 (0)