From 2a9116cd474acb7d10895d3a726d0615c32fc7a5 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Fri, 19 Dec 2025 10:22:28 +0000 Subject: [PATCH] Regenerate client from commit ccaecb4 of spec repo --- .generator/schemas/v1/openapi.yaml | 69 +++++++-- .../CreateDashboard_1093147852.java | 101 +++++++++++++ .../CreateDashboard_1442588603.java | 6 +- .../CreateDashboard_1617893815.java | 100 +++++++++++++ .../dashboards/CreateDashboard_252716965.java | 6 +- .../CreateDashboard_2823363212.java | 83 +++++++++++ .../CreateDashboard_3882428227.java | 5 +- .../v1/model/DistributionWidgetRequest.java | 123 +++++++++++++++- .../v1/model/DistributionWidgetXAxis.java | 29 +++- .../v1/model/HeatMapWidgetDefinition.java | 69 +++++++++ .../client/v1/model/HeatMapWidgetRequest.java | 61 ++++++++ .../client/v1/model/HeatMapWidgetXAxis.java | 136 ++++++++++++++++++ ...e.java => WidgetHistogramRequestType.java} | 30 ++-- .../api/client/v1/model/WidgetMarker.java | 6 +- ...widget_with_markers_and_num_buckets.freeze | 1 + ...n_widget_with_markers_and_num_buckets.json | 58 ++++++++ ...la_and_function_distribution_widget.freeze | 1 + ...mula_and_function_distribution_widget.json | 58 ++++++++ ...widget_with_markers_and_num_buckets.freeze | 1 + ...p_widget_with_markers_and_num_buckets.json | 58 ++++++++ .../api/client/v1/api/dashboards.feature | 32 +++++ 21 files changed, 986 insertions(+), 47 deletions(-) create mode 100644 examples/v1/dashboards/CreateDashboard_1093147852.java create mode 100644 examples/v1/dashboards/CreateDashboard_1617893815.java create mode 100644 examples/v1/dashboards/CreateDashboard_2823363212.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetXAxis.java rename src/main/java/com/datadog/api/client/v1/model/{DistributionWidgetHistogramRequestType.java => WidgetHistogramRequestType.java} (53%) create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.freeze create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.json create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.freeze create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.json create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.freeze create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.json diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index d9bb88a10f2..7d3eaefcd08 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -1741,6 +1741,9 @@ components: type: string markers: description: List of markers. + example: + - display_type: percentile + value: '90' items: $ref: '#/components/schemas/WidgetMarker' type: array @@ -1799,14 +1802,6 @@ components: - $ref: '#/components/schemas/FormulaAndFunctionMetricQueryDefinition' - $ref: '#/components/schemas/FormulaAndFunctionEventQueryDefinition' - $ref: '#/components/schemas/FormulaAndFunctionApmResourceStatsQueryDefinition' - DistributionWidgetHistogramRequestType: - description: Request type for the histogram request. - enum: - - histogram - example: histogram - type: string - x-enum-varnames: - - HISTOGRAM DistributionWidgetRequest: description: Updated distribution widget. properties: @@ -1816,6 +1811,11 @@ components: $ref: '#/components/schemas/ApmStatsQueryDefinition' event_query: $ref: '#/components/schemas/LogQueryDefinition' + formulas: + description: List of formulas that operate on queries. + items: + $ref: '#/components/schemas/WidgetFormula' + type: array log_query: $ref: '#/components/schemas/LogQueryDefinition' network_query: @@ -1827,10 +1827,17 @@ components: q: description: Widget query. type: string + queries: + description: List of queries that can be returned directly or used in formulas. + items: + $ref: '#/components/schemas/FormulaAndFunctionQueryDefinition' + type: array query: $ref: '#/components/schemas/DistributionWidgetHistogramRequestQuery' request_type: - $ref: '#/components/schemas/DistributionWidgetHistogramRequestType' + $ref: '#/components/schemas/WidgetHistogramRequestType' + response_format: + $ref: '#/components/schemas/FormulaAndFunctionResponseFormat' rum_query: $ref: '#/components/schemas/LogQueryDefinition' security_query: @@ -1854,6 +1861,11 @@ components: description: Specifies minimum value to show on the x-axis. It takes a number, percentile (p90 === 90th percentile), or auto for default behavior. type: string + num_buckets: + description: Number of value buckets to target, also known as the resolution + of the value bins. + format: int64 + type: integer scale: default: linear description: Specifies the scale type. Possible values are `linear`. @@ -3752,6 +3764,14 @@ components: type: array legend_size: $ref: '#/components/schemas/WidgetLegendSize' + markers: + description: List of markers. + example: + - display_type: percentile + value: '90' + items: + $ref: '#/components/schemas/WidgetMarker' + type: array requests: description: List of widget types. example: @@ -3776,6 +3796,8 @@ components: type: string type: $ref: '#/components/schemas/HeatMapWidgetDefinitionType' + xaxis: + $ref: '#/components/schemas/HeatMapWidgetXAxis' yaxis: $ref: '#/components/schemas/WidgetAxis' required: @@ -3819,6 +3841,10 @@ components: items: $ref: '#/components/schemas/FormulaAndFunctionQueryDefinition' type: array + query: + $ref: '#/components/schemas/FormulaAndFunctionMetricQueryDefinition' + request_type: + $ref: '#/components/schemas/WidgetHistogramRequestType' response_format: $ref: '#/components/schemas/FormulaAndFunctionResponseFormat' rum_query: @@ -3828,6 +3854,16 @@ components: style: $ref: '#/components/schemas/WidgetStyle' type: object + HeatMapWidgetXAxis: + description: X Axis controls for the heat map widget. + properties: + num_buckets: + description: Number of time buckets to target, also known as the resolution + of the time bins. This is only applicable for distribution of points (group + distributions use the roll-up modifier). + format: int64 + type: integer + type: object Host: description: Object representing a host. properties: @@ -25041,6 +25077,14 @@ components: x-enum-varnames: - CHECK - CLUSTER + WidgetHistogramRequestType: + description: Request type for the histogram request. + enum: + - histogram + example: histogram + type: string + x-enum-varnames: + - HISTOGRAM WidgetHorizontalAlign: description: Horizontal alignment. enum: @@ -25245,7 +25289,7 @@ components: display_type: description: "Combination of:\n - A severity error, warning, ok, or info\n \ - A line type: dashed, solid, or bold\nIn this case of a Distribution - widget, this can be set to be `x_axis_percentile`." + widget, this can be set to be `percentile`." example: error dashed type: string label: @@ -25256,8 +25300,11 @@ components: description: Timestamp for the widget. type: string value: - description: Value to apply. Can be a single value y = 15 or a range of + description: 'Value to apply. Can be a single value y = 15 or a range of values 0 < y < 10. + + For Distribution widgets with `display_type` set to `percentile`, this + should be a numeric percentile value (for example, "90" for P90).' example: y = 15 type: string required: diff --git a/examples/v1/dashboards/CreateDashboard_1093147852.java b/examples/v1/dashboards/CreateDashboard_1093147852.java new file mode 100644 index 00000000000..6b9a68c3252 --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_1093147852.java @@ -0,0 +1,101 @@ +// Create a new dashboard with distribution widget with markers and num_buckets + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v1.api.DashboardsApi; +import com.datadog.api.client.v1.model.Dashboard; +import com.datadog.api.client.v1.model.DashboardLayoutType; +import com.datadog.api.client.v1.model.DistributionWidgetDefinition; +import com.datadog.api.client.v1.model.DistributionWidgetDefinitionType; +import com.datadog.api.client.v1.model.DistributionWidgetRequest; +import com.datadog.api.client.v1.model.DistributionWidgetXAxis; +import com.datadog.api.client.v1.model.DistributionWidgetYAxis; +import com.datadog.api.client.v1.model.FormulaAndFunctionMetricAggregation; +import com.datadog.api.client.v1.model.FormulaAndFunctionMetricDataSource; +import com.datadog.api.client.v1.model.FormulaAndFunctionMetricQueryDefinition; +import com.datadog.api.client.v1.model.FormulaAndFunctionQueryDefinition; +import com.datadog.api.client.v1.model.FormulaAndFunctionResponseFormat; +import com.datadog.api.client.v1.model.Widget; +import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetLayout; +import com.datadog.api.client.v1.model.WidgetMarker; +import com.datadog.api.client.v1.model.WidgetTextAlign; +import java.util.Arrays; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + DashboardsApi apiInstance = new DashboardsApi(defaultClient); + + Dashboard body = + new Dashboard() + .title("Example-Dashboard") + .widgets( + Collections.singletonList( + new Widget() + .definition( + new WidgetDefinition( + new DistributionWidgetDefinition() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .type(DistributionWidgetDefinitionType.DISTRIBUTION) + .xaxis( + new DistributionWidgetXAxis() + .scale("linear") + .min("auto") + .max("auto") + .includeZero(true) + .numBuckets(55L)) + .yaxis( + new DistributionWidgetYAxis() + .scale("linear") + .min("auto") + .max("auto") + .includeZero(true)) + .markers( + Arrays.asList( + new WidgetMarker() + .displayType("percentile") + .value("50"), + new WidgetMarker() + .displayType("percentile") + .value("99"), + new WidgetMarker() + .displayType("percentile") + .value("90"))) + .requests( + Collections.singletonList( + new DistributionWidgetRequest() + .responseFormat( + FormulaAndFunctionResponseFormat.SCALAR) + .queries( + Collections.singletonList( + new FormulaAndFunctionQueryDefinition( + new FormulaAndFunctionMetricQueryDefinition() + .dataSource( + FormulaAndFunctionMetricDataSource + .METRICS) + .name("query1") + .query( + "avg:system.cpu.user{*} by" + + " {service}") + .aggregator( + FormulaAndFunctionMetricAggregation + .AVG)))))))) + .layout(new WidgetLayout().x(0L).y(0L).width(4L).height(4L)))) + .layoutType(DashboardLayoutType.ORDERED); + + try { + Dashboard result = apiInstance.createDashboard(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling DashboardsApi#createDashboard"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v1/dashboards/CreateDashboard_1442588603.java b/examples/v1/dashboards/CreateDashboard_1442588603.java index 6c73157e5c8..ed9b337051a 100644 --- a/examples/v1/dashboards/CreateDashboard_1442588603.java +++ b/examples/v1/dashboards/CreateDashboard_1442588603.java @@ -9,7 +9,6 @@ import com.datadog.api.client.v1.model.DistributionWidgetDefinition; import com.datadog.api.client.v1.model.DistributionWidgetDefinitionType; import com.datadog.api.client.v1.model.DistributionWidgetHistogramRequestQuery; -import com.datadog.api.client.v1.model.DistributionWidgetHistogramRequestType; import com.datadog.api.client.v1.model.DistributionWidgetRequest; import com.datadog.api.client.v1.model.DistributionWidgetXAxis; import com.datadog.api.client.v1.model.DistributionWidgetYAxis; @@ -18,6 +17,7 @@ import com.datadog.api.client.v1.model.FormulaAndFunctionApmResourceStatsQueryDefinition; import com.datadog.api.client.v1.model.Widget; import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetHistogramRequestType; import com.datadog.api.client.v1.model.WidgetLayout; import com.datadog.api.client.v1.model.WidgetStyle; import com.datadog.api.client.v1.model.WidgetTextAlign; @@ -77,9 +77,7 @@ public static void main(String[] args) { .primaryTagName("datacenter") .operationName( "universal.http.client"))) - .requestType( - DistributionWidgetHistogramRequestType - .HISTOGRAM) + .requestType(WidgetHistogramRequestType.HISTOGRAM) .style(new WidgetStyle().palette("dog_classic")))))) .layout(new WidgetLayout().x(8L).y(0L).width(4L).height(2L)))) .layoutType(DashboardLayoutType.ORDERED); diff --git a/examples/v1/dashboards/CreateDashboard_1617893815.java b/examples/v1/dashboards/CreateDashboard_1617893815.java new file mode 100644 index 00000000000..24c08250dc0 --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_1617893815.java @@ -0,0 +1,100 @@ +// Create a new dashboard with formula and function distribution widget + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v1.api.DashboardsApi; +import com.datadog.api.client.v1.model.Dashboard; +import com.datadog.api.client.v1.model.DashboardLayoutType; +import com.datadog.api.client.v1.model.DistributionWidgetDefinition; +import com.datadog.api.client.v1.model.DistributionWidgetDefinitionType; +import com.datadog.api.client.v1.model.DistributionWidgetRequest; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventAggregation; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventQueryDefinition; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventQueryDefinitionCompute; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventQueryDefinitionSearch; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventQueryGroupBy; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventQueryGroupBySort; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventsDataSource; +import com.datadog.api.client.v1.model.FormulaAndFunctionQueryDefinition; +import com.datadog.api.client.v1.model.FormulaAndFunctionResponseFormat; +import com.datadog.api.client.v1.model.QuerySortOrder; +import com.datadog.api.client.v1.model.Widget; +import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetLayout; +import com.datadog.api.client.v1.model.WidgetLegacyLiveSpan; +import com.datadog.api.client.v1.model.WidgetTextAlign; +import com.datadog.api.client.v1.model.WidgetTime; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + DashboardsApi apiInstance = new DashboardsApi(defaultClient); + + Dashboard body = + new Dashboard() + .title("Example-Dashboard") + .widgets( + Collections.singletonList( + new Widget() + .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L)) + .definition( + new WidgetDefinition( + new DistributionWidgetDefinition() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .time(new WidgetTime(new WidgetLegacyLiveSpan())) + .type(DistributionWidgetDefinitionType.DISTRIBUTION) + .requests( + Collections.singletonList( + new DistributionWidgetRequest() + .responseFormat( + FormulaAndFunctionResponseFormat.SCALAR) + .queries( + Collections.singletonList( + new FormulaAndFunctionQueryDefinition( + new FormulaAndFunctionEventQueryDefinition() + .dataSource( + FormulaAndFunctionEventsDataSource + .LOGS) + .name("query1") + .search( + new FormulaAndFunctionEventQueryDefinitionSearch() + .query("")) + .indexes( + Collections.singletonList("*")) + .compute( + new FormulaAndFunctionEventQueryDefinitionCompute() + .aggregation( + FormulaAndFunctionEventAggregation + .AVG) + .metric("@duration")) + .groupBy( + Collections.singletonList( + new FormulaAndFunctionEventQueryGroupBy() + .facet("service") + .limit(1000L) + .sort( + new FormulaAndFunctionEventQueryGroupBySort() + .aggregation( + FormulaAndFunctionEventAggregation + .COUNT) + .order( + QuerySortOrder + .DESC)))) + .storage("hot")))))))))) + .layoutType(DashboardLayoutType.FREE); + + try { + Dashboard result = apiInstance.createDashboard(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling DashboardsApi#createDashboard"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v1/dashboards/CreateDashboard_252716965.java b/examples/v1/dashboards/CreateDashboard_252716965.java index e8fe07fa2de..060c54a63b7 100644 --- a/examples/v1/dashboards/CreateDashboard_252716965.java +++ b/examples/v1/dashboards/CreateDashboard_252716965.java @@ -9,7 +9,6 @@ import com.datadog.api.client.v1.model.DistributionWidgetDefinition; import com.datadog.api.client.v1.model.DistributionWidgetDefinitionType; import com.datadog.api.client.v1.model.DistributionWidgetHistogramRequestQuery; -import com.datadog.api.client.v1.model.DistributionWidgetHistogramRequestType; import com.datadog.api.client.v1.model.DistributionWidgetRequest; import com.datadog.api.client.v1.model.DistributionWidgetXAxis; import com.datadog.api.client.v1.model.DistributionWidgetYAxis; @@ -18,6 +17,7 @@ import com.datadog.api.client.v1.model.Widget; import com.datadog.api.client.v1.model.WidgetCustomLink; import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetHistogramRequestType; import com.datadog.api.client.v1.model.WidgetLayout; import com.datadog.api.client.v1.model.WidgetStyle; import com.datadog.api.client.v1.model.WidgetTextAlign; @@ -70,9 +70,7 @@ public static void main(String[] args) { FormulaAndFunctionMetricDataSource .METRICS) .name("query1"))) - .requestType( - DistributionWidgetHistogramRequestType - .HISTOGRAM) + .requestType(WidgetHistogramRequestType.HISTOGRAM) .style(new WidgetStyle().palette("dog_classic")))))) .layout(new WidgetLayout().x(0L).y(0L).width(4L).height(2L)))) .layoutType(DashboardLayoutType.ORDERED); diff --git a/examples/v1/dashboards/CreateDashboard_2823363212.java b/examples/v1/dashboards/CreateDashboard_2823363212.java new file mode 100644 index 00000000000..27d160a872e --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_2823363212.java @@ -0,0 +1,83 @@ +// Create a new dashboard with heatmap widget with markers and num_buckets + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v1.api.DashboardsApi; +import com.datadog.api.client.v1.model.Dashboard; +import com.datadog.api.client.v1.model.DashboardLayoutType; +import com.datadog.api.client.v1.model.FormulaAndFunctionMetricDataSource; +import com.datadog.api.client.v1.model.FormulaAndFunctionMetricQueryDefinition; +import com.datadog.api.client.v1.model.HeatMapWidgetDefinition; +import com.datadog.api.client.v1.model.HeatMapWidgetDefinitionType; +import com.datadog.api.client.v1.model.HeatMapWidgetRequest; +import com.datadog.api.client.v1.model.HeatMapWidgetXAxis; +import com.datadog.api.client.v1.model.Widget; +import com.datadog.api.client.v1.model.WidgetAxis; +import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetHistogramRequestType; +import com.datadog.api.client.v1.model.WidgetLayout; +import com.datadog.api.client.v1.model.WidgetMarker; +import com.datadog.api.client.v1.model.WidgetTextAlign; +import java.util.Arrays; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + DashboardsApi apiInstance = new DashboardsApi(defaultClient); + + Dashboard body = + new Dashboard() + .title("Example-Dashboard") + .widgets( + Collections.singletonList( + new Widget() + .definition( + new WidgetDefinition( + new HeatMapWidgetDefinition() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .type(HeatMapWidgetDefinitionType.HEATMAP) + .xaxis(new HeatMapWidgetXAxis().numBuckets(75L)) + .yaxis( + new WidgetAxis() + .scale("linear") + .min("auto") + .max("auto") + .includeZero(true)) + .markers( + Arrays.asList( + new WidgetMarker() + .displayType("percentile") + .value("50"), + new WidgetMarker() + .displayType("percentile") + .value("99"))) + .requests( + Collections.singletonList( + new HeatMapWidgetRequest() + .requestType(WidgetHistogramRequestType.HISTOGRAM) + .query( + new FormulaAndFunctionMetricQueryDefinition() + .dataSource( + FormulaAndFunctionMetricDataSource + .METRICS) + .name("query1") + .query( + "histogram:trace.servlet.request{*}")))))) + .layout(new WidgetLayout().x(0L).y(0L).width(4L).height(4L)))) + .layoutType(DashboardLayoutType.ORDERED); + + try { + Dashboard result = apiInstance.createDashboard(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling DashboardsApi#createDashboard"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v1/dashboards/CreateDashboard_3882428227.java b/examples/v1/dashboards/CreateDashboard_3882428227.java index 5471a4f804a..38b6371e2c8 100644 --- a/examples/v1/dashboards/CreateDashboard_3882428227.java +++ b/examples/v1/dashboards/CreateDashboard_3882428227.java @@ -9,7 +9,6 @@ import com.datadog.api.client.v1.model.DistributionWidgetDefinition; import com.datadog.api.client.v1.model.DistributionWidgetDefinitionType; import com.datadog.api.client.v1.model.DistributionWidgetHistogramRequestQuery; -import com.datadog.api.client.v1.model.DistributionWidgetHistogramRequestType; import com.datadog.api.client.v1.model.DistributionWidgetRequest; import com.datadog.api.client.v1.model.DistributionWidgetXAxis; import com.datadog.api.client.v1.model.DistributionWidgetYAxis; @@ -20,6 +19,7 @@ import com.datadog.api.client.v1.model.FormulaAndFunctionEventsDataSource; import com.datadog.api.client.v1.model.Widget; import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetHistogramRequestType; import com.datadog.api.client.v1.model.WidgetLayout; import com.datadog.api.client.v1.model.WidgetTextAlign; import java.util.Collections; @@ -78,8 +78,7 @@ public static void main(String[] args) { .indexes( Collections.singletonList("*")))) .requestType( - DistributionWidgetHistogramRequestType - .HISTOGRAM))))) + WidgetHistogramRequestType.HISTOGRAM))))) .layout(new WidgetLayout().x(0L).y(0L).width(4L).height(2L)))) .layoutType(DashboardLayoutType.ORDERED); diff --git a/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetRequest.java b/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetRequest.java index 21bd24c62c8..ce7fba29281 100644 --- a/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetRequest.java +++ b/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetRequest.java @@ -12,7 +12,9 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -21,13 +23,16 @@ DistributionWidgetRequest.JSON_PROPERTY_APM_QUERY, DistributionWidgetRequest.JSON_PROPERTY_APM_STATS_QUERY, DistributionWidgetRequest.JSON_PROPERTY_EVENT_QUERY, + DistributionWidgetRequest.JSON_PROPERTY_FORMULAS, DistributionWidgetRequest.JSON_PROPERTY_LOG_QUERY, DistributionWidgetRequest.JSON_PROPERTY_NETWORK_QUERY, DistributionWidgetRequest.JSON_PROPERTY_PROCESS_QUERY, DistributionWidgetRequest.JSON_PROPERTY_PROFILE_METRICS_QUERY, DistributionWidgetRequest.JSON_PROPERTY_Q, + DistributionWidgetRequest.JSON_PROPERTY_QUERIES, DistributionWidgetRequest.JSON_PROPERTY_QUERY, DistributionWidgetRequest.JSON_PROPERTY_REQUEST_TYPE, + DistributionWidgetRequest.JSON_PROPERTY_RESPONSE_FORMAT, DistributionWidgetRequest.JSON_PROPERTY_RUM_QUERY, DistributionWidgetRequest.JSON_PROPERTY_SECURITY_QUERY, DistributionWidgetRequest.JSON_PROPERTY_STYLE @@ -45,6 +50,9 @@ public class DistributionWidgetRequest { public static final String JSON_PROPERTY_EVENT_QUERY = "event_query"; private LogQueryDefinition eventQuery; + public static final String JSON_PROPERTY_FORMULAS = "formulas"; + private List formulas = null; + public static final String JSON_PROPERTY_LOG_QUERY = "log_query"; private LogQueryDefinition logQuery; @@ -60,11 +68,17 @@ public class DistributionWidgetRequest { public static final String JSON_PROPERTY_Q = "q"; private String q; + public static final String JSON_PROPERTY_QUERIES = "queries"; + private List queries = null; + public static final String JSON_PROPERTY_QUERY = "query"; private DistributionWidgetHistogramRequestQuery query; public static final String JSON_PROPERTY_REQUEST_TYPE = "request_type"; - private DistributionWidgetHistogramRequestType requestType; + private WidgetHistogramRequestType requestType; + + public static final String JSON_PROPERTY_RESPONSE_FORMAT = "response_format"; + private FormulaAndFunctionResponseFormat responseFormat; public static final String JSON_PROPERTY_RUM_QUERY = "rum_query"; private LogQueryDefinition rumQuery; @@ -141,6 +155,39 @@ public void setEventQuery(LogQueryDefinition eventQuery) { this.eventQuery = eventQuery; } + public DistributionWidgetRequest formulas(List formulas) { + this.formulas = formulas; + for (WidgetFormula item : formulas) { + this.unparsed |= item.unparsed; + } + return this; + } + + public DistributionWidgetRequest addFormulasItem(WidgetFormula formulasItem) { + if (this.formulas == null) { + this.formulas = new ArrayList<>(); + } + this.formulas.add(formulasItem); + this.unparsed |= formulasItem.unparsed; + return this; + } + + /** + * List of formulas that operate on queries. + * + * @return formulas + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_FORMULAS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getFormulas() { + return formulas; + } + + public void setFormulas(List formulas) { + this.formulas = formulas; + } + public DistributionWidgetRequest logQuery(LogQueryDefinition logQuery) { this.logQuery = logQuery; this.unparsed |= logQuery.unparsed; @@ -250,6 +297,39 @@ public void setQ(String q) { this.q = q; } + public DistributionWidgetRequest queries(List queries) { + this.queries = queries; + for (FormulaAndFunctionQueryDefinition item : queries) { + this.unparsed |= item.unparsed; + } + return this; + } + + public DistributionWidgetRequest addQueriesItem(FormulaAndFunctionQueryDefinition queriesItem) { + if (this.queries == null) { + this.queries = new ArrayList<>(); + } + this.queries.add(queriesItem); + this.unparsed |= queriesItem.unparsed; + return this; + } + + /** + * List of queries that can be returned directly or used in formulas. + * + * @return queries + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_QUERIES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getQueries() { + return queries; + } + + public void setQueries(List queries) { + this.queries = queries; + } + public DistributionWidgetRequest query(DistributionWidgetHistogramRequestQuery query) { this.query = query; this.unparsed |= query.unparsed; @@ -272,7 +352,7 @@ public void setQuery(DistributionWidgetHistogramRequestQuery query) { this.query = query; } - public DistributionWidgetRequest requestType(DistributionWidgetHistogramRequestType requestType) { + public DistributionWidgetRequest requestType(WidgetHistogramRequestType requestType) { this.requestType = requestType; this.unparsed |= !requestType.isValid(); return this; @@ -286,17 +366,43 @@ public DistributionWidgetRequest requestType(DistributionWidgetHistogramRequestT @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_REQUEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public DistributionWidgetHistogramRequestType getRequestType() { + public WidgetHistogramRequestType getRequestType() { return requestType; } - public void setRequestType(DistributionWidgetHistogramRequestType requestType) { + public void setRequestType(WidgetHistogramRequestType requestType) { if (!requestType.isValid()) { this.unparsed = true; } this.requestType = requestType; } + public DistributionWidgetRequest responseFormat(FormulaAndFunctionResponseFormat responseFormat) { + this.responseFormat = responseFormat; + this.unparsed |= !responseFormat.isValid(); + return this; + } + + /** + * Timeseries, scalar, or event list response. Event list response formats are supported by Geomap + * widgets. + * + * @return responseFormat + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RESPONSE_FORMAT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public FormulaAndFunctionResponseFormat getResponseFormat() { + return responseFormat; + } + + public void setResponseFormat(FormulaAndFunctionResponseFormat responseFormat) { + if (!responseFormat.isValid()) { + this.unparsed = true; + } + this.responseFormat = responseFormat; + } + public DistributionWidgetRequest rumQuery(LogQueryDefinition rumQuery) { this.rumQuery = rumQuery; this.unparsed |= rumQuery.unparsed; @@ -422,13 +528,16 @@ public boolean equals(Object o) { return Objects.equals(this.apmQuery, distributionWidgetRequest.apmQuery) && Objects.equals(this.apmStatsQuery, distributionWidgetRequest.apmStatsQuery) && Objects.equals(this.eventQuery, distributionWidgetRequest.eventQuery) + && Objects.equals(this.formulas, distributionWidgetRequest.formulas) && Objects.equals(this.logQuery, distributionWidgetRequest.logQuery) && Objects.equals(this.networkQuery, distributionWidgetRequest.networkQuery) && Objects.equals(this.processQuery, distributionWidgetRequest.processQuery) && Objects.equals(this.profileMetricsQuery, distributionWidgetRequest.profileMetricsQuery) && Objects.equals(this.q, distributionWidgetRequest.q) + && Objects.equals(this.queries, distributionWidgetRequest.queries) && Objects.equals(this.query, distributionWidgetRequest.query) && Objects.equals(this.requestType, distributionWidgetRequest.requestType) + && Objects.equals(this.responseFormat, distributionWidgetRequest.responseFormat) && Objects.equals(this.rumQuery, distributionWidgetRequest.rumQuery) && Objects.equals(this.securityQuery, distributionWidgetRequest.securityQuery) && Objects.equals(this.style, distributionWidgetRequest.style) @@ -442,13 +551,16 @@ public int hashCode() { apmQuery, apmStatsQuery, eventQuery, + formulas, logQuery, networkQuery, processQuery, profileMetricsQuery, q, + queries, query, requestType, + responseFormat, rumQuery, securityQuery, style, @@ -462,6 +574,7 @@ public String toString() { sb.append(" apmQuery: ").append(toIndentedString(apmQuery)).append("\n"); sb.append(" apmStatsQuery: ").append(toIndentedString(apmStatsQuery)).append("\n"); sb.append(" eventQuery: ").append(toIndentedString(eventQuery)).append("\n"); + sb.append(" formulas: ").append(toIndentedString(formulas)).append("\n"); sb.append(" logQuery: ").append(toIndentedString(logQuery)).append("\n"); sb.append(" networkQuery: ").append(toIndentedString(networkQuery)).append("\n"); sb.append(" processQuery: ").append(toIndentedString(processQuery)).append("\n"); @@ -469,8 +582,10 @@ public String toString() { .append(toIndentedString(profileMetricsQuery)) .append("\n"); sb.append(" q: ").append(toIndentedString(q)).append("\n"); + sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); sb.append(" query: ").append(toIndentedString(query)).append("\n"); sb.append(" requestType: ").append(toIndentedString(requestType)).append("\n"); + sb.append(" responseFormat: ").append(toIndentedString(responseFormat)).append("\n"); sb.append(" rumQuery: ").append(toIndentedString(rumQuery)).append("\n"); sb.append(" securityQuery: ").append(toIndentedString(securityQuery)).append("\n"); sb.append(" style: ").append(toIndentedString(style)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetXAxis.java b/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetXAxis.java index ff9f32300ed..6a89f5e0453 100644 --- a/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetXAxis.java +++ b/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetXAxis.java @@ -21,6 +21,7 @@ DistributionWidgetXAxis.JSON_PROPERTY_INCLUDE_ZERO, DistributionWidgetXAxis.JSON_PROPERTY_MAX, DistributionWidgetXAxis.JSON_PROPERTY_MIN, + DistributionWidgetXAxis.JSON_PROPERTY_NUM_BUCKETS, DistributionWidgetXAxis.JSON_PROPERTY_SCALE }) @jakarta.annotation.Generated( @@ -36,6 +37,9 @@ public class DistributionWidgetXAxis { public static final String JSON_PROPERTY_MIN = "min"; private String min = "auto"; + public static final String JSON_PROPERTY_NUM_BUCKETS = "num_buckets"; + private Long numBuckets; + public static final String JSON_PROPERTY_SCALE = "scale"; private String scale = "linear"; @@ -104,6 +108,27 @@ public void setMin(String min) { this.min = min; } + public DistributionWidgetXAxis numBuckets(Long numBuckets) { + this.numBuckets = numBuckets; + return this; + } + + /** + * Number of value buckets to target, also known as the resolution of the value bins. + * + * @return numBuckets + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NUM_BUCKETS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getNumBuckets() { + return numBuckets; + } + + public void setNumBuckets(Long numBuckets) { + this.numBuckets = numBuckets; + } + public DistributionWidgetXAxis scale(String scale) { this.scale = scale; return this; @@ -184,13 +209,14 @@ public boolean equals(Object o) { return Objects.equals(this.includeZero, distributionWidgetXAxis.includeZero) && Objects.equals(this.max, distributionWidgetXAxis.max) && Objects.equals(this.min, distributionWidgetXAxis.min) + && Objects.equals(this.numBuckets, distributionWidgetXAxis.numBuckets) && Objects.equals(this.scale, distributionWidgetXAxis.scale) && Objects.equals(this.additionalProperties, distributionWidgetXAxis.additionalProperties); } @Override public int hashCode() { - return Objects.hash(includeZero, max, min, scale, additionalProperties); + return Objects.hash(includeZero, max, min, numBuckets, scale, additionalProperties); } @Override @@ -200,6 +226,7 @@ public String toString() { sb.append(" includeZero: ").append(toIndentedString(includeZero)).append("\n"); sb.append(" max: ").append(toIndentedString(max)).append("\n"); sb.append(" min: ").append(toIndentedString(min)).append("\n"); + sb.append(" numBuckets: ").append(toIndentedString(numBuckets)).append("\n"); sb.append(" scale: ").append(toIndentedString(scale)).append("\n"); sb.append(" additionalProperties: ") .append(toIndentedString(additionalProperties)) diff --git a/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetDefinition.java b/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetDefinition.java index 8f43656e1e3..478b7ef2cf5 100644 --- a/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetDefinition.java +++ b/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetDefinition.java @@ -27,6 +27,7 @@ HeatMapWidgetDefinition.JSON_PROPERTY_CUSTOM_LINKS, HeatMapWidgetDefinition.JSON_PROPERTY_EVENTS, HeatMapWidgetDefinition.JSON_PROPERTY_LEGEND_SIZE, + HeatMapWidgetDefinition.JSON_PROPERTY_MARKERS, HeatMapWidgetDefinition.JSON_PROPERTY_REQUESTS, HeatMapWidgetDefinition.JSON_PROPERTY_SHOW_LEGEND, HeatMapWidgetDefinition.JSON_PROPERTY_TIME, @@ -34,6 +35,7 @@ HeatMapWidgetDefinition.JSON_PROPERTY_TITLE_ALIGN, HeatMapWidgetDefinition.JSON_PROPERTY_TITLE_SIZE, HeatMapWidgetDefinition.JSON_PROPERTY_TYPE, + HeatMapWidgetDefinition.JSON_PROPERTY_XAXIS, HeatMapWidgetDefinition.JSON_PROPERTY_YAXIS }) @jakarta.annotation.Generated( @@ -49,6 +51,9 @@ public class HeatMapWidgetDefinition { public static final String JSON_PROPERTY_LEGEND_SIZE = "legend_size"; private String legendSize; + public static final String JSON_PROPERTY_MARKERS = "markers"; + private List markers = null; + public static final String JSON_PROPERTY_REQUESTS = "requests"; private List requests = new ArrayList<>(); @@ -70,6 +75,9 @@ public class HeatMapWidgetDefinition { public static final String JSON_PROPERTY_TYPE = "type"; private HeatMapWidgetDefinitionType type = HeatMapWidgetDefinitionType.HEATMAP; + public static final String JSON_PROPERTY_XAXIS = "xaxis"; + private HeatMapWidgetXAxis xaxis; + public static final String JSON_PROPERTY_YAXIS = "yaxis"; private WidgetAxis yaxis; @@ -172,6 +180,39 @@ public void setLegendSize(String legendSize) { this.legendSize = legendSize; } + public HeatMapWidgetDefinition markers(List markers) { + this.markers = markers; + for (WidgetMarker item : markers) { + this.unparsed |= item.unparsed; + } + return this; + } + + public HeatMapWidgetDefinition addMarkersItem(WidgetMarker markersItem) { + if (this.markers == null) { + this.markers = new ArrayList<>(); + } + this.markers.add(markersItem); + this.unparsed |= markersItem.unparsed; + return this; + } + + /** + * List of markers. + * + * @return markers + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MARKERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getMarkers() { + return markers; + } + + public void setMarkers(List markers) { + this.markers = markers; + } + public HeatMapWidgetDefinition requests(List requests) { this.requests = requests; for (HeatMapWidgetRequest item : requests) { @@ -335,6 +376,28 @@ public void setType(HeatMapWidgetDefinitionType type) { this.type = type; } + public HeatMapWidgetDefinition xaxis(HeatMapWidgetXAxis xaxis) { + this.xaxis = xaxis; + this.unparsed |= xaxis.unparsed; + return this; + } + + /** + * X Axis controls for the heat map widget. + * + * @return xaxis + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_XAXIS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public HeatMapWidgetXAxis getXaxis() { + return xaxis; + } + + public void setXaxis(HeatMapWidgetXAxis xaxis) { + this.xaxis = xaxis; + } + public HeatMapWidgetDefinition yaxis(WidgetAxis yaxis) { this.yaxis = yaxis; this.unparsed |= yaxis.unparsed; @@ -416,6 +479,7 @@ public boolean equals(Object o) { return Objects.equals(this.customLinks, heatMapWidgetDefinition.customLinks) && Objects.equals(this.events, heatMapWidgetDefinition.events) && Objects.equals(this.legendSize, heatMapWidgetDefinition.legendSize) + && Objects.equals(this.markers, heatMapWidgetDefinition.markers) && Objects.equals(this.requests, heatMapWidgetDefinition.requests) && Objects.equals(this.showLegend, heatMapWidgetDefinition.showLegend) && Objects.equals(this.time, heatMapWidgetDefinition.time) @@ -423,6 +487,7 @@ public boolean equals(Object o) { && Objects.equals(this.titleAlign, heatMapWidgetDefinition.titleAlign) && Objects.equals(this.titleSize, heatMapWidgetDefinition.titleSize) && Objects.equals(this.type, heatMapWidgetDefinition.type) + && Objects.equals(this.xaxis, heatMapWidgetDefinition.xaxis) && Objects.equals(this.yaxis, heatMapWidgetDefinition.yaxis) && Objects.equals(this.additionalProperties, heatMapWidgetDefinition.additionalProperties); } @@ -433,6 +498,7 @@ public int hashCode() { customLinks, events, legendSize, + markers, requests, showLegend, time, @@ -440,6 +506,7 @@ public int hashCode() { titleAlign, titleSize, type, + xaxis, yaxis, additionalProperties); } @@ -451,6 +518,7 @@ public String toString() { sb.append(" customLinks: ").append(toIndentedString(customLinks)).append("\n"); sb.append(" events: ").append(toIndentedString(events)).append("\n"); sb.append(" legendSize: ").append(toIndentedString(legendSize)).append("\n"); + sb.append(" markers: ").append(toIndentedString(markers)).append("\n"); sb.append(" requests: ").append(toIndentedString(requests)).append("\n"); sb.append(" showLegend: ").append(toIndentedString(showLegend)).append("\n"); sb.append(" time: ").append(toIndentedString(time)).append("\n"); @@ -458,6 +526,7 @@ public String toString() { sb.append(" titleAlign: ").append(toIndentedString(titleAlign)).append("\n"); sb.append(" titleSize: ").append(toIndentedString(titleSize)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" xaxis: ").append(toIndentedString(xaxis)).append("\n"); sb.append(" yaxis: ").append(toIndentedString(yaxis)).append("\n"); sb.append(" additionalProperties: ") .append(toIndentedString(additionalProperties)) diff --git a/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetRequest.java b/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetRequest.java index c47b200236f..e07b09330fe 100644 --- a/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetRequest.java +++ b/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetRequest.java @@ -29,6 +29,8 @@ HeatMapWidgetRequest.JSON_PROPERTY_PROFILE_METRICS_QUERY, HeatMapWidgetRequest.JSON_PROPERTY_Q, HeatMapWidgetRequest.JSON_PROPERTY_QUERIES, + HeatMapWidgetRequest.JSON_PROPERTY_QUERY, + HeatMapWidgetRequest.JSON_PROPERTY_REQUEST_TYPE, HeatMapWidgetRequest.JSON_PROPERTY_RESPONSE_FORMAT, HeatMapWidgetRequest.JSON_PROPERTY_RUM_QUERY, HeatMapWidgetRequest.JSON_PROPERTY_SECURITY_QUERY, @@ -65,6 +67,12 @@ public class HeatMapWidgetRequest { public static final String JSON_PROPERTY_QUERIES = "queries"; private List queries = null; + public static final String JSON_PROPERTY_QUERY = "query"; + private FormulaAndFunctionMetricQueryDefinition query; + + public static final String JSON_PROPERTY_REQUEST_TYPE = "request_type"; + private WidgetHistogramRequestType requestType; + public static final String JSON_PROPERTY_RESPONSE_FORMAT = "response_format"; private FormulaAndFunctionResponseFormat responseFormat; @@ -296,6 +304,53 @@ public void setQueries(List queries) { this.queries = queries; } + public HeatMapWidgetRequest query(FormulaAndFunctionMetricQueryDefinition query) { + this.query = query; + this.unparsed |= query.unparsed; + return this; + } + + /** + * A formula and functions metrics query. + * + * @return query + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public FormulaAndFunctionMetricQueryDefinition getQuery() { + return query; + } + + public void setQuery(FormulaAndFunctionMetricQueryDefinition query) { + this.query = query; + } + + public HeatMapWidgetRequest requestType(WidgetHistogramRequestType requestType) { + this.requestType = requestType; + this.unparsed |= !requestType.isValid(); + return this; + } + + /** + * Request type for the histogram request. + * + * @return requestType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REQUEST_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetHistogramRequestType getRequestType() { + return requestType; + } + + public void setRequestType(WidgetHistogramRequestType requestType) { + if (!requestType.isValid()) { + this.unparsed = true; + } + this.requestType = requestType; + } + public HeatMapWidgetRequest responseFormat(FormulaAndFunctionResponseFormat responseFormat) { this.responseFormat = responseFormat; this.unparsed |= !responseFormat.isValid(); @@ -453,6 +508,8 @@ public boolean equals(Object o) { && Objects.equals(this.profileMetricsQuery, heatMapWidgetRequest.profileMetricsQuery) && Objects.equals(this.q, heatMapWidgetRequest.q) && Objects.equals(this.queries, heatMapWidgetRequest.queries) + && Objects.equals(this.query, heatMapWidgetRequest.query) + && Objects.equals(this.requestType, heatMapWidgetRequest.requestType) && Objects.equals(this.responseFormat, heatMapWidgetRequest.responseFormat) && Objects.equals(this.rumQuery, heatMapWidgetRequest.rumQuery) && Objects.equals(this.securityQuery, heatMapWidgetRequest.securityQuery) @@ -472,6 +529,8 @@ public int hashCode() { profileMetricsQuery, q, queries, + query, + requestType, responseFormat, rumQuery, securityQuery, @@ -494,6 +553,8 @@ public String toString() { .append("\n"); sb.append(" q: ").append(toIndentedString(q)).append("\n"); sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); + sb.append(" query: ").append(toIndentedString(query)).append("\n"); + sb.append(" requestType: ").append(toIndentedString(requestType)).append("\n"); sb.append(" responseFormat: ").append(toIndentedString(responseFormat)).append("\n"); sb.append(" rumQuery: ").append(toIndentedString(rumQuery)).append("\n"); sb.append(" securityQuery: ").append(toIndentedString(securityQuery)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetXAxis.java b/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetXAxis.java new file mode 100644 index 00000000000..0c59362bbe5 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/HeatMapWidgetXAxis.java @@ -0,0 +1,136 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v1.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** X Axis controls for the heat map widget. */ +@JsonPropertyOrder({HeatMapWidgetXAxis.JSON_PROPERTY_NUM_BUCKETS}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class HeatMapWidgetXAxis { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_NUM_BUCKETS = "num_buckets"; + private Long numBuckets; + + public HeatMapWidgetXAxis numBuckets(Long numBuckets) { + this.numBuckets = numBuckets; + return this; + } + + /** + * Number of time buckets to target, also known as the resolution of the time bins. This is only + * applicable for distribution of points (group distributions use the roll-up modifier). + * + * @return numBuckets + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NUM_BUCKETS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getNumBuckets() { + return numBuckets; + } + + public void setNumBuckets(Long numBuckets) { + this.numBuckets = numBuckets; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return HeatMapWidgetXAxis + */ + @JsonAnySetter + public HeatMapWidgetXAxis putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this HeatMapWidgetXAxis object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HeatMapWidgetXAxis heatMapWidgetXAxis = (HeatMapWidgetXAxis) o; + return Objects.equals(this.numBuckets, heatMapWidgetXAxis.numBuckets) + && Objects.equals(this.additionalProperties, heatMapWidgetXAxis.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(numBuckets, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class HeatMapWidgetXAxis {\n"); + sb.append(" numBuckets: ").append(toIndentedString(numBuckets)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetHistogramRequestType.java b/src/main/java/com/datadog/api/client/v1/model/WidgetHistogramRequestType.java similarity index 53% rename from src/main/java/com/datadog/api/client/v1/model/DistributionWidgetHistogramRequestType.java rename to src/main/java/com/datadog/api/client/v1/model/WidgetHistogramRequestType.java index 441db2f9b2f..bc4e053767d 100644 --- a/src/main/java/com/datadog/api/client/v1/model/DistributionWidgetHistogramRequestType.java +++ b/src/main/java/com/datadog/api/client/v1/model/WidgetHistogramRequestType.java @@ -19,44 +19,38 @@ import java.util.Set; /** Request type for the histogram request. */ -@JsonSerialize( - using = - DistributionWidgetHistogramRequestType.DistributionWidgetHistogramRequestTypeSerializer - .class) -public class DistributionWidgetHistogramRequestType extends ModelEnum { +@JsonSerialize(using = WidgetHistogramRequestType.WidgetHistogramRequestTypeSerializer.class) +public class WidgetHistogramRequestType extends ModelEnum { private static final Set allowedValues = new HashSet(Arrays.asList("histogram")); - public static final DistributionWidgetHistogramRequestType HISTOGRAM = - new DistributionWidgetHistogramRequestType("histogram"); + public static final WidgetHistogramRequestType HISTOGRAM = + new WidgetHistogramRequestType("histogram"); - DistributionWidgetHistogramRequestType(String value) { + WidgetHistogramRequestType(String value) { super(value, allowedValues); } - public static class DistributionWidgetHistogramRequestTypeSerializer - extends StdSerializer { - public DistributionWidgetHistogramRequestTypeSerializer( - Class t) { + public static class WidgetHistogramRequestTypeSerializer + extends StdSerializer { + public WidgetHistogramRequestTypeSerializer(Class t) { super(t); } - public DistributionWidgetHistogramRequestTypeSerializer() { + public WidgetHistogramRequestTypeSerializer() { this(null); } @Override public void serialize( - DistributionWidgetHistogramRequestType value, - JsonGenerator jgen, - SerializerProvider provider) + WidgetHistogramRequestType value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeObject(value.value); } } @JsonCreator - public static DistributionWidgetHistogramRequestType fromValue(String value) { - return new DistributionWidgetHistogramRequestType(value); + public static WidgetHistogramRequestType fromValue(String value) { + return new WidgetHistogramRequestType(value); } } diff --git a/src/main/java/com/datadog/api/client/v1/model/WidgetMarker.java b/src/main/java/com/datadog/api/client/v1/model/WidgetMarker.java index 0c17b1efb3e..cd46e85c72c 100644 --- a/src/main/java/com/datadog/api/client/v1/model/WidgetMarker.java +++ b/src/main/java/com/datadog/api/client/v1/model/WidgetMarker.java @@ -54,7 +54,7 @@ public WidgetMarker displayType(String displayType) { /** * Combination of: - A severity error, warning, ok, or info - A line type: dashed, solid, or bold - * In this case of a Distribution widget, this can be set to be x_axis_percentile. + * In this case of a Distribution widget, this can be set to be percentile. * * @return displayType */ @@ -117,7 +117,9 @@ public WidgetMarker value(String value) { } /** - * Value to apply. Can be a single value y = 15 or a range of values 0 < y < 10. + * Value to apply. Can be a single value y = 15 or a range of values 0 < y < 10. For + * Distribution widgets with display_type set to percentile, this should + * be a numeric percentile value (for example, "90" for P90). * * @return value */ diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.freeze new file mode 100644 index 00000000000..957e38ac24a --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.freeze @@ -0,0 +1 @@ +2025-12-04T23:08:04.708Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.json new file mode 100644 index 00000000000..6dbdae5a308 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"layout_type\":\"ordered\",\"title\":\"Test-Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets-1764889684\",\"widgets\":[{\"definition\":{\"markers\":[{\"display_type\":\"percentile\",\"value\":\"50\"},{\"display_type\":\"percentile\",\"value\":\"99\"},{\"display_type\":\"percentile\",\"value\":\"90\"}],\"requests\":[{\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\"}],\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"distribution\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"num_buckets\":55,\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":4,\"width\":4,\"x\":0,\"y\":0}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"ved-atm-2g5\",\"title\":\"Test-Create_a_new_dashboard_with_distribution_widget_with_markers_and_num_buckets-1764889684\",\"description\":null,\"author_handle\":\"shishi.liu@datadoghq.com\",\"author_name\":\"Shishi Liu\",\"layout_type\":\"ordered\",\"url\":\"/dashboard/ved-atm-2g5/test-createanewdashboardwithdistributionwidgetwithmarkersandnumbuckets-176488968\",\"template_variables\":null,\"widgets\":[{\"definition\":{\"markers\":[{\"display_type\":\"percentile\",\"value\":\"50\"},{\"display_type\":\"percentile\",\"value\":\"99\"},{\"display_type\":\"percentile\",\"value\":\"90\"}],\"requests\":[{\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\"}],\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"distribution\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"num_buckets\":55,\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":4,\"width\":4,\"x\":0,\"y\":0},\"id\":984443192078703}],\"notify_list\":null,\"created_at\":\"2025-12-04T23:08:05.111437+00:00\",\"modified_at\":\"2025-12-04T23:08:05.111437+00:00\",\"restricted_roles\":[]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "1965461e-b336-d2a7-fcff-22eeba84a215" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/ved-atm-2g5", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"ved-atm-2g5\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "05322de5-f1c0-6078-f380-6223fd28da2c" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.freeze new file mode 100644 index 00000000000..028130f6b8a --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.freeze @@ -0,0 +1 @@ +2025-12-15T17:03:52.164Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.json new file mode 100644 index 00000000000..4f0f71a21ba --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_formula_and_function_distribution_widget.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_formula_and_function_distribution_widget-1765818232\",\"widgets\":[{\"definition\":{\"requests\":[{\"queries\":[{\"compute\":{\"aggregation\":\"avg\",\"metric\":\"@duration\"},\"data_source\":\"logs\",\"group_by\":[{\"facet\":\"service\",\"limit\":1000,\"sort\":{\"aggregation\":\"count\",\"order\":\"desc\"}}],\"indexes\":[\"*\"],\"name\":\"query1\",\"search\":{\"query\":\"\"},\"storage\":\"hot\"}],\"response_format\":\"scalar\"}],\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"distribution\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"ii3-z6t-p8x\",\"title\":\"Test-Create_a_new_dashboard_with_formula_and_function_distribution_widget-1765818232\",\"description\":null,\"author_handle\":\"shishi.liu@datadoghq.com\",\"author_name\":\"Shishi Liu\",\"layout_type\":\"free\",\"url\":\"/dashboard/ii3-z6t-p8x/test-createanewdashboardwithformulaandfunctiondistributionwidget-1765818232\",\"template_variables\":[],\"widgets\":[{\"definition\":{\"requests\":[{\"queries\":[{\"compute\":{\"aggregation\":\"avg\",\"metric\":\"@duration\"},\"data_source\":\"logs\",\"group_by\":[{\"facet\":\"service\",\"limit\":1000,\"sort\":{\"aggregation\":\"count\",\"order\":\"desc\"}}],\"indexes\":[\"*\"],\"name\":\"query1\",\"search\":{\"query\":\"\"},\"storage\":\"hot\"}],\"response_format\":\"scalar\"}],\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"distribution\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":1822470106302094}],\"notify_list\":[],\"created_at\":\"2025-12-15T17:03:52.607823+00:00\",\"modified_at\":\"2025-12-15T17:03:52.607823+00:00\",\"restricted_roles\":[]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "db029f70-77dd-e3aa-9409-4d0b02ae83f1" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/ii3-z6t-p8x", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"ii3-z6t-p8x\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "2a9d55c7-36a9-0318-e46f-eebe3c54cd02" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.freeze new file mode 100644 index 00000000000..502143efd66 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.freeze @@ -0,0 +1 @@ +2025-12-15T17:39:03.378Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.json new file mode 100644 index 00000000000..ed6a75fc444 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"layout_type\":\"ordered\",\"title\":\"Test-Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets-1765820343\",\"widgets\":[{\"definition\":{\"markers\":[{\"display_type\":\"percentile\",\"value\":\"50\"},{\"display_type\":\"percentile\",\"value\":\"99\"}],\"requests\":[{\"query\":{\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"histogram:trace.servlet.request{*}\"},\"request_type\":\"histogram\"}],\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"heatmap\",\"xaxis\":{\"num_buckets\":75},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":4,\"width\":4,\"x\":0,\"y\":0}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"r3p-kik-ven\",\"title\":\"Test-Create_a_new_dashboard_with_heatmap_widget_with_markers_and_num_buckets-1765820343\",\"description\":null,\"author_handle\":\"shishi.liu@datadoghq.com\",\"author_name\":\"Shishi Liu\",\"layout_type\":\"ordered\",\"url\":\"/dashboard/r3p-kik-ven/test-createanewdashboardwithheatmapwidgetwithmarkersandnumbuckets-1765820343\",\"template_variables\":null,\"widgets\":[{\"definition\":{\"markers\":[{\"display_type\":\"percentile\",\"value\":\"50\"},{\"display_type\":\"percentile\",\"value\":\"99\"}],\"requests\":[{\"query\":{\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"histogram:trace.servlet.request{*}\"},\"request_type\":\"histogram\"}],\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"heatmap\",\"xaxis\":{\"num_buckets\":75},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":4,\"width\":4,\"x\":0,\"y\":0},\"id\":4627813855695599}],\"notify_list\":null,\"created_at\":\"2025-12-15T17:39:03.852775+00:00\",\"modified_at\":\"2025-12-15T17:39:03.852775+00:00\",\"restricted_roles\":[]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "5805834d-b0c2-1af9-4aea-89ac0853ff0c" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/r3p-kik-ven", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"r3p-kik-ven\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "594d80bc-e9fd-8b3d-7938-ac4f944e6b93" + } +] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v1/api/dashboards.feature b/src/test/resources/com/datadog/api/client/v1/api/dashboards.feature index 588c609cedd..076546114f1 100644 --- a/src/test/resources/com/datadog/api/client/v1/api/dashboards.feature +++ b/src/test/resources/com/datadog/api/client/v1/api/dashboards.feature @@ -368,6 +368,15 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].apm_stats_query.service" is equal to "cassandra" And the response "widgets[0].definition.requests[0].apm_stats_query.name" is equal to "cassandra.query" + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with distribution widget with markers and num_buckets + Given new "CreateDashboard" request + And body with value { "title": "{{ unique }}", "widgets": [{"definition": { "title": "", "title_size": "16", "title_align": "left", "type": "distribution", "xaxis": { "scale": "linear", "min": "auto", "max": "auto", "include_zero": true, "num_buckets": 55 }, "yaxis": { "scale": "linear", "min": "auto", "max": "auto", "include_zero": true }, "markers": [{ "display_type": "percentile", "value": "50" }, { "display_type": "percentile", "value": "99" }, { "display_type": "percentile", "value": "90" }], "requests": [{ "response_format": "scalar", "queries": [{ "data_source": "metrics", "name": "query1", "query": "avg:system.cpu.user{*} by {service}", "aggregator": "avg" }] }] }, "layout": { "x": 0, "y": 0, "width": 4, "height": 4 } } ], "layout_type": "ordered" } + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.xaxis.num_buckets" is equal to 55 + And the response "widgets[0].definition.markers" is equal to [{"display_type": "percentile", "value": "50"}, {"display_type": "percentile", "value": "99"}, {"display_type": "percentile", "value": "90"}] + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with event_stream list_stream widget Given new "CreateDashboard" request @@ -397,6 +406,20 @@ Feature: Dashboards And the response "widgets[0].definition.type" is equal to "event_timeline" And the response "widgets[0].definition.query" is equal to "status:error priority:all" + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with formula and function distribution widget + Given new "CreateDashboard" request + And body with value {"title": "{{ unique }}", "widgets": [{"layout": {"x": 0, "y": 0, "width": 47, "height": 15}, "definition": {"title": "", "title_size": "16", "title_align": "left", "time": {}, "type": "distribution", "requests": [{"response_format": "scalar", "queries": [{"data_source": "logs", "name": "query1", "search": {"query": ""}, "indexes": ["*"], "compute": {"aggregation": "avg", "metric": "@duration"}, "group_by": [{"facet": "service", "limit": 1000, "sort": {"aggregation": "count", "order": "desc"}}], "storage": "hot"}]}]}}], "template_variables": [], "layout_type": "free", "notify_list": []} + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.type" is equal to "distribution" + And the response "widgets[0].definition.requests[0].response_format" is equal to "scalar" + And the response "widgets[0].definition.requests[0].queries[0].data_source" is equal to "logs" + And the response "widgets[0].definition.requests[0].queries[0].name" is equal to "query1" + And the response "widgets[0].definition.requests[0].queries[0].compute.aggregation" is equal to "avg" + And the response "widgets[0].definition.requests[0].queries[0].compute.metric" is equal to "@duration" + And the response "widgets[0].definition.requests[0].queries[0].group_by[0].facet" is equal to "service" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with formula and function heatmap widget Given new "CreateDashboard" request @@ -471,6 +494,15 @@ Feature: Dashboards And the response "widgets[0].definition.type" is equal to "heatmap" And the response "widgets[0].definition.requests[0].q" is equal to "avg:system.cpu.user{*} by {service}" + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with heatmap widget with markers and num_buckets + Given new "CreateDashboard" request + And body with value { "title": "{{ unique }}", "widgets": [{"definition": { "title": "", "title_size": "16", "title_align": "left", "type": "heatmap", "xaxis": { "num_buckets": 75 }, "yaxis": { "scale": "linear", "min": "auto", "max": "auto", "include_zero": true }, "markers": [{ "display_type": "percentile", "value": "50" }, { "display_type": "percentile", "value": "99" }], "requests": [{ "request_type": "histogram", "query": { "data_source": "metrics", "name": "query1", "query": "histogram:trace.servlet.request{*}"} }] }, "layout": { "x": 0, "y": 0, "width": 4, "height": 4 } }], "layout_type": "ordered" } + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.xaxis.num_buckets" is equal to 75 + And the response "widgets[0].definition.markers" is equal to [{"display_type": "percentile", "value": "50"}, {"display_type": "percentile", "value": "99"}] + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with hostmap widget Given new "CreateDashboard" request