diff --git a/.apigentools-info b/.apigentools-info index 28753b6e2bf..4aec3e22adb 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.5", - "regenerated": "2023-07-17 14:34:04.094079", - "spec_repo_commit": "e70d9c5c" + "regenerated": "2023-07-18 13:52:25.283556", + "spec_repo_commit": "cbddd387" }, "v2": { "apigentools_version": "1.6.5", - "regenerated": "2023-07-17 14:34:04.112291", - "spec_repo_commit": "e70d9c5c" + "regenerated": "2023-07-18 13:52:25.298279", + "spec_repo_commit": "cbddd387" } } } \ No newline at end of file diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index ee050210f8f..d1dafe45a48 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -19371,11 +19371,13 @@ components: - area - bars - line + - overlay type: string x-enum-varnames: - AREA - BARS - LINE + - OVERLAY WidgetEvent: description: 'Event overlay control options. diff --git a/examples/v1/dashboards/CreateDashboard_2261785072.java b/examples/v1/dashboards/CreateDashboard_2261785072.java new file mode 100644 index 00000000000..0260e0da205 --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_2261785072.java @@ -0,0 +1,86 @@ +// Create a new dashboard with a timeseries widget and an overlay request + +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.FormulaAndFunctionQueryDefinition; +import com.datadog.api.client.v1.model.FormulaAndFunctionResponseFormat; +import com.datadog.api.client.v1.model.TimeseriesWidgetDefinition; +import com.datadog.api.client.v1.model.TimeseriesWidgetDefinitionType; +import com.datadog.api.client.v1.model.TimeseriesWidgetRequest; +import com.datadog.api.client.v1.model.Widget; +import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetDisplayType; +import com.datadog.api.client.v1.model.WidgetLineType; +import com.datadog.api.client.v1.model.WidgetLineWidth; +import com.datadog.api.client.v1.model.WidgetRequestStyle; +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() + .layoutType(DashboardLayoutType.ORDERED) + .title("Example-Dashboard") + .widgets( + Collections.singletonList( + new Widget() + .definition( + new WidgetDefinition( + new TimeseriesWidgetDefinition() + .type(TimeseriesWidgetDefinitionType.TIMESERIES) + .requests( + Arrays.asList( + new TimeseriesWidgetRequest() + .onRightYaxis(false) + .queries( + Collections.singletonList( + new FormulaAndFunctionQueryDefinition( + new FormulaAndFunctionMetricQueryDefinition() + .dataSource( + FormulaAndFunctionMetricDataSource + .METRICS) + .name("mymetric") + .query("avg:system.cpu.user{*}")))) + .responseFormat( + FormulaAndFunctionResponseFormat.TIMESERIES) + .displayType(WidgetDisplayType.LINE), + new TimeseriesWidgetRequest() + .responseFormat( + FormulaAndFunctionResponseFormat.TIMESERIES) + .queries( + Collections.singletonList( + new FormulaAndFunctionQueryDefinition( + new FormulaAndFunctionMetricQueryDefinition() + .dataSource( + FormulaAndFunctionMetricDataSource + .METRICS) + .name("mymetricoverlay") + .query("avg:system.cpu.user{*}")))) + .style( + new WidgetRequestStyle() + .palette("purple") + .lineType(WidgetLineType.SOLID) + .lineWidth(WidgetLineWidth.NORMAL)) + .displayType(WidgetDisplayType.OVERLAY))))))); + + 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/src/main/java/com/datadog/api/client/v1/model/WidgetDisplayType.java b/src/main/java/com/datadog/api/client/v1/model/WidgetDisplayType.java index 52b2d04f389..cd95a84f317 100644 --- a/src/main/java/com/datadog/api/client/v1/model/WidgetDisplayType.java +++ b/src/main/java/com/datadog/api/client/v1/model/WidgetDisplayType.java @@ -23,11 +23,12 @@ public class WidgetDisplayType extends ModelEnum { private static final Set allowedValues = - new HashSet(Arrays.asList("area", "bars", "line")); + new HashSet(Arrays.asList("area", "bars", "line", "overlay")); public static final WidgetDisplayType AREA = new WidgetDisplayType("area"); public static final WidgetDisplayType BARS = new WidgetDisplayType("bars"); public static final WidgetDisplayType LINE = new WidgetDisplayType("line"); + public static final WidgetDisplayType OVERLAY = new WidgetDisplayType("overlay"); WidgetDisplayType(String value) { super(value, allowedValues); diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request.freeze new file mode 100644 index 00000000000..6d211e52500 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request.freeze @@ -0,0 +1 @@ +2023-07-14T16:50:52.704Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request.json new file mode 100644 index 00000000000..0fdaf06b369 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"layout_type\":\"ordered\",\"title\":\"Test-Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request-1689353452\",\"widgets\":[{\"definition\":{\"requests\":[{\"display_type\":\"line\",\"on_right_yaxis\":false,\"queries\":[{\"data_source\":\"metrics\",\"name\":\"mymetric\",\"query\":\"avg:system.cpu.user{*}\"}],\"response_format\":\"timeseries\"},{\"display_type\":\"overlay\",\"queries\":[{\"data_source\":\"metrics\",\"name\":\"mymetricoverlay\",\"query\":\"avg:system.cpu.user{*}\"}],\"response_format\":\"timeseries\",\"style\":{\"line_type\":\"solid\",\"line_width\":\"normal\",\"palette\":\"purple\"}}],\"type\":\"timeseries\"}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"56a-eq2-76i\",\"title\":\"Test-Create_a_new_dashboard_with_a_timeseries_widget_and_an_overlay_request-1689353452\",\"description\":null,\"author_handle\":\"frog@datadoghq.com\",\"author_name\":null,\"layout_type\":\"ordered\",\"url\":\"/dashboard/56a-eq2-76i/test-createanewdashboardwithatimeserieswidgetandanoverlayrequest-1689353452\",\"is_read_only\":false,\"template_variables\":null,\"widgets\":[{\"definition\":{\"requests\":[{\"display_type\":\"line\",\"on_right_yaxis\":false,\"queries\":[{\"data_source\":\"metrics\",\"name\":\"mymetric\",\"query\":\"avg:system.cpu.user{*}\"}],\"response_format\":\"timeseries\"},{\"display_type\":\"overlay\",\"queries\":[{\"data_source\":\"metrics\",\"name\":\"mymetricoverlay\",\"query\":\"avg:system.cpu.user{*}\"}],\"response_format\":\"timeseries\",\"style\":{\"line_type\":\"solid\",\"line_width\":\"normal\",\"palette\":\"purple\"}}],\"type\":\"timeseries\"},\"id\":4582756152438811}],\"notify_list\":null,\"created_at\":\"2023-07-14T16:50:52.916992+00:00\",\"modified_at\":\"2023-07-14T16:50:52.916992+00:00\",\"restricted_roles\":[]}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "19fdfef9-9ee2-610d-f46d-0fa67b561938" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/56a-eq2-76i", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"56a-eq2-76i\"}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "7cb02329-294e-4674-1608-6e8b0f168618" + } +] \ 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 cec23fc40ca..76f1e5e5f41 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 @@ -159,6 +159,20 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].response_format" is equal to "scalar" And the response "widgets[0].definition.requests[0].queries[0].query" is equal to "sum:my.cool.count.metric{*}" + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with a timeseries widget and an overlay request + Given new "CreateDashboard" request + And body with value {"layout_type": "ordered", "title": "{{ unique }}", "widgets": [{"definition": {"type": "timeseries", "requests": [{"on_right_yaxis": false, "queries": [{"data_source": "metrics", "name": "mymetric", "query": "avg:system.cpu.user{*}"}], "response_format": "timeseries", "display_type": "line"}, {"response_format": "timeseries", "queries": [{"data_source": "metrics", "name": "mymetricoverlay", "query": "avg:system.cpu.user{*}"}], "style": {"palette": "purple", "line_type": "solid", "line_width": "normal"}, "display_type": "overlay"}]}}]} + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.requests[0].response_format" is equal to "timeseries" + And the response "widgets[0].definition.requests[0].queries[0].data_source" is equal to "metrics" + And the response "widgets[0].definition.requests[0].queries[0].name" is equal to "mymetric" + And the response "widgets[0].definition.requests[0].queries[0].query" is equal to "avg:system.cpu.user{*}" + And the response "widgets[0].definition.requests[1].display_type" is equal to "overlay" + And the response "widgets[0].definition.requests[1].queries[0].query" is equal to "avg:system.cpu.user{*}" + And the response "widgets[0].definition.requests[1].queries[0].name" is equal to "mymetricoverlay" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with a timeseries widget using formulas and functions cloud cost query Given new "CreateDashboard" request