diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index d9bb88a10f2..a0b2429945a 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -895,6 +895,174 @@ components: items: $ref: '#/components/schemas/AzureAccount' type: array + BarChartWidgetDefinition: + description: The bar chart visualization displays categorical data using vertical + bars, allowing you to compare values across different groups. + properties: + custom_links: + description: List of custom links. + items: + $ref: '#/components/schemas/WidgetCustomLink' + type: array + requests: + description: List of bar chart widget requests. + example: + - q: system.load.1 + items: + $ref: '#/components/schemas/BarChartWidgetRequest' + maxItems: 1 + minItems: 1 + type: array + style: + $ref: '#/components/schemas/BarChartWidgetStyle' + time: + $ref: '#/components/schemas/WidgetTime' + title: + description: Title of your widget. + type: string + title_align: + $ref: '#/components/schemas/WidgetTextAlign' + title_size: + description: Size of the title. + type: string + type: + $ref: '#/components/schemas/BarChartWidgetDefinitionType' + required: + - type + - requests + type: object + BarChartWidgetDefinitionType: + default: bar_chart + description: Type of the bar chart widget. + enum: + - bar_chart + example: bar_chart + type: string + x-enum-varnames: + - BAR_CHART + BarChartWidgetDisplay: + description: Bar chart widget display options. + oneOf: + - $ref: '#/components/schemas/BarChartWidgetStacked' + - $ref: '#/components/schemas/BarChartWidgetFlat' + BarChartWidgetFlat: + description: Bar chart widget flat display. + properties: + type: + $ref: '#/components/schemas/BarChartWidgetFlatType' + required: + - type + type: object + BarChartWidgetFlatType: + default: flat + description: Bar chart widget flat display type. + enum: + - flat + example: flat + type: string + x-enum-varnames: + - FLAT + BarChartWidgetLegend: + description: Bar chart widget stacked legend behavior. + enum: + - automatic + - inline + - none + example: automatic + type: string + x-enum-varnames: + - AUTOMATIC + - INLINE + - NONE + BarChartWidgetRequest: + description: Updated bar chart widget. + properties: + apm_query: + $ref: '#/components/schemas/LogQueryDefinition' + audit_query: + $ref: '#/components/schemas/LogQueryDefinition' + conditional_formats: + description: List of conditional formats. + example: + - comparator: '>=' + palette: blue + value: 1.0 + items: + $ref: '#/components/schemas/WidgetConditionalFormat' + type: array + 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: + $ref: '#/components/schemas/LogQueryDefinition' + process_query: + $ref: '#/components/schemas/ProcessQueryDefinition' + profile_metrics_query: + $ref: '#/components/schemas/LogQueryDefinition' + 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 + response_format: + $ref: '#/components/schemas/FormulaAndFunctionResponseFormat' + rum_query: + $ref: '#/components/schemas/LogQueryDefinition' + security_query: + $ref: '#/components/schemas/LogQueryDefinition' + sort: + $ref: '#/components/schemas/WidgetSortBy' + style: + $ref: '#/components/schemas/WidgetRequestStyle' + type: object + BarChartWidgetScaling: + description: Bar chart widget scaling definition. + enum: + - absolute + - relative + type: string + x-enum-varnames: + - ABSOLUTE + - RELATIVE + BarChartWidgetStacked: + description: Bar chart widget stacked display options. + properties: + legend: + $ref: '#/components/schemas/BarChartWidgetLegend' + type: + $ref: '#/components/schemas/BarChartWidgetStackedType' + required: + - type + type: object + BarChartWidgetStackedType: + default: stacked + description: Bar chart widget stacked display type. + enum: + - stacked + example: stacked + type: string + x-enum-varnames: + - STACKED + BarChartWidgetStyle: + description: Style customization for a bar chart widget. + properties: + display: + $ref: '#/components/schemas/BarChartWidgetDisplay' + palette: + description: Color palette to apply to the widget. + type: string + scaling: + $ref: '#/components/schemas/BarChartWidgetScaling' + type: object CancelDowntimesByScopeRequest: description: Cancel downtimes according to scope. properties: @@ -14338,6 +14506,7 @@ components: SplitGraphSourceWidgetDefinition: description: The original widget we are splitting on. oneOf: + - $ref: '#/components/schemas/BarChartWidgetDefinition' - $ref: '#/components/schemas/ChangeWidgetDefinition' - $ref: '#/components/schemas/GeomapWidgetDefinition' - $ref: '#/components/schemas/QueryValueWidgetDefinition' @@ -24829,6 +24998,7 @@ components: oneOf: - $ref: '#/components/schemas/AlertGraphWidgetDefinition' - $ref: '#/components/schemas/AlertValueWidgetDefinition' + - $ref: '#/components/schemas/BarChartWidgetDefinition' - $ref: '#/components/schemas/ChangeWidgetDefinition' - $ref: '#/components/schemas/CheckStatusWidgetDefinition' - $ref: '#/components/schemas/DistributionWidgetDefinition' diff --git a/examples/v1/dashboards/CreateDashboard_1712853070.java b/examples/v1/dashboards/CreateDashboard_1712853070.java new file mode 100644 index 00000000000..6dfe1ba7a09 --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_1712853070.java @@ -0,0 +1,113 @@ +// Create a new dashboard with bar_chart 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.BarChartWidgetDefinition; +import com.datadog.api.client.v1.model.BarChartWidgetDefinitionType; +import com.datadog.api.client.v1.model.BarChartWidgetDisplay; +import com.datadog.api.client.v1.model.BarChartWidgetLegend; +import com.datadog.api.client.v1.model.BarChartWidgetRequest; +import com.datadog.api.client.v1.model.BarChartWidgetScaling; +import com.datadog.api.client.v1.model.BarChartWidgetStacked; +import com.datadog.api.client.v1.model.BarChartWidgetStackedType; +import com.datadog.api.client.v1.model.BarChartWidgetStyle; +import com.datadog.api.client.v1.model.Dashboard; +import com.datadog.api.client.v1.model.DashboardLayoutType; +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.FormulaType; +import com.datadog.api.client.v1.model.Widget; +import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetFormula; +import com.datadog.api.client.v1.model.WidgetFormulaSort; +import com.datadog.api.client.v1.model.WidgetLayout; +import com.datadog.api.client.v1.model.WidgetLegacyLiveSpan; +import com.datadog.api.client.v1.model.WidgetSort; +import com.datadog.api.client.v1.model.WidgetSortBy; +import com.datadog.api.client.v1.model.WidgetSortOrderBy; +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") + .description("") + .widgets( + Collections.singletonList( + new Widget() + .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L)) + .definition( + new WidgetDefinition( + new BarChartWidgetDefinition() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .time(new WidgetTime(new WidgetLegacyLiveSpan())) + .style( + new BarChartWidgetStyle() + .display( + new BarChartWidgetDisplay( + new BarChartWidgetStacked() + .type(BarChartWidgetStackedType.STACKED) + .legend(BarChartWidgetLegend.INLINE))) + .scaling(BarChartWidgetScaling.RELATIVE) + .palette("dog_classic")) + .type(BarChartWidgetDefinitionType.BAR_CHART) + .requests( + Collections.singletonList( + new BarChartWidgetRequest() + .queries( + Collections.singletonList( + new FormulaAndFunctionQueryDefinition( + new FormulaAndFunctionMetricQueryDefinition() + .dataSource( + FormulaAndFunctionMetricDataSource + .METRICS) + .name("query1") + .query( + "avg:system.cpu.user{*} by" + + " {service}") + .aggregator( + FormulaAndFunctionMetricAggregation + .AVG)))) + .formulas( + Collections.singletonList( + new WidgetFormula().formula("query1"))) + .sort( + new WidgetSortBy() + .count(10L) + .orderBy( + Collections.singletonList( + new WidgetSortOrderBy( + new WidgetFormulaSort() + .type(FormulaType.FORMULA) + .index(0L) + .order( + WidgetSort + .DESCENDING))))) + .responseFormat( + FormulaAndFunctionResponseFormat.SCALAR))))))) + .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_2345541687.java b/examples/v1/dashboards/CreateDashboard_2345541687.java new file mode 100644 index 00000000000..dded6eca797 --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_2345541687.java @@ -0,0 +1,111 @@ +// Create a new dashboard with a bar_chart widget with stacked type and no legend specified + +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.BarChartWidgetDefinition; +import com.datadog.api.client.v1.model.BarChartWidgetDefinitionType; +import com.datadog.api.client.v1.model.BarChartWidgetDisplay; +import com.datadog.api.client.v1.model.BarChartWidgetRequest; +import com.datadog.api.client.v1.model.BarChartWidgetScaling; +import com.datadog.api.client.v1.model.BarChartWidgetStacked; +import com.datadog.api.client.v1.model.BarChartWidgetStackedType; +import com.datadog.api.client.v1.model.BarChartWidgetStyle; +import com.datadog.api.client.v1.model.Dashboard; +import com.datadog.api.client.v1.model.DashboardLayoutType; +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.GroupType; +import com.datadog.api.client.v1.model.Widget; +import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetFormula; +import com.datadog.api.client.v1.model.WidgetGroupSort; +import com.datadog.api.client.v1.model.WidgetLayout; +import com.datadog.api.client.v1.model.WidgetLegacyLiveSpan; +import com.datadog.api.client.v1.model.WidgetSort; +import com.datadog.api.client.v1.model.WidgetSortBy; +import com.datadog.api.client.v1.model.WidgetSortOrderBy; +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") + .description("") + .widgets( + Collections.singletonList( + new Widget() + .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L)) + .definition( + new WidgetDefinition( + new BarChartWidgetDefinition() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .time(new WidgetTime(new WidgetLegacyLiveSpan())) + .style( + new BarChartWidgetStyle() + .display( + new BarChartWidgetDisplay( + new BarChartWidgetStacked() + .type(BarChartWidgetStackedType.STACKED))) + .scaling(BarChartWidgetScaling.RELATIVE) + .palette("dog_classic")) + .type(BarChartWidgetDefinitionType.BAR_CHART) + .requests( + Collections.singletonList( + new BarChartWidgetRequest() + .queries( + Collections.singletonList( + new FormulaAndFunctionQueryDefinition( + new FormulaAndFunctionMetricQueryDefinition() + .dataSource( + FormulaAndFunctionMetricDataSource + .METRICS) + .name("query1") + .query( + "avg:system.cpu.user{*} by" + + " {service}") + .aggregator( + FormulaAndFunctionMetricAggregation + .AVG)))) + .formulas( + Collections.singletonList( + new WidgetFormula().formula("query1"))) + .sort( + new WidgetSortBy() + .count(10L) + .orderBy( + Collections.singletonList( + new WidgetSortOrderBy( + new WidgetGroupSort() + .type(GroupType.GROUP) + .name("service") + .order( + WidgetSort + .ASCENDING))))) + .responseFormat( + FormulaAndFunctionResponseFormat.SCALAR))))))) + .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_2617251399.java b/examples/v1/dashboards/CreateDashboard_2617251399.java new file mode 100644 index 00000000000..f296f65225d --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_2617251399.java @@ -0,0 +1,113 @@ +// Create a new dashboard with bar_chart widget sorted by group + +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.BarChartWidgetDefinition; +import com.datadog.api.client.v1.model.BarChartWidgetDefinitionType; +import com.datadog.api.client.v1.model.BarChartWidgetDisplay; +import com.datadog.api.client.v1.model.BarChartWidgetLegend; +import com.datadog.api.client.v1.model.BarChartWidgetRequest; +import com.datadog.api.client.v1.model.BarChartWidgetScaling; +import com.datadog.api.client.v1.model.BarChartWidgetStacked; +import com.datadog.api.client.v1.model.BarChartWidgetStackedType; +import com.datadog.api.client.v1.model.BarChartWidgetStyle; +import com.datadog.api.client.v1.model.Dashboard; +import com.datadog.api.client.v1.model.DashboardLayoutType; +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.GroupType; +import com.datadog.api.client.v1.model.Widget; +import com.datadog.api.client.v1.model.WidgetDefinition; +import com.datadog.api.client.v1.model.WidgetFormula; +import com.datadog.api.client.v1.model.WidgetGroupSort; +import com.datadog.api.client.v1.model.WidgetLayout; +import com.datadog.api.client.v1.model.WidgetLegacyLiveSpan; +import com.datadog.api.client.v1.model.WidgetSort; +import com.datadog.api.client.v1.model.WidgetSortBy; +import com.datadog.api.client.v1.model.WidgetSortOrderBy; +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") + .description("") + .widgets( + Collections.singletonList( + new Widget() + .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L)) + .definition( + new WidgetDefinition( + new BarChartWidgetDefinition() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .time(new WidgetTime(new WidgetLegacyLiveSpan())) + .style( + new BarChartWidgetStyle() + .display( + new BarChartWidgetDisplay( + new BarChartWidgetStacked() + .type(BarChartWidgetStackedType.STACKED) + .legend(BarChartWidgetLegend.INLINE))) + .scaling(BarChartWidgetScaling.RELATIVE) + .palette("dog_classic")) + .type(BarChartWidgetDefinitionType.BAR_CHART) + .requests( + Collections.singletonList( + new BarChartWidgetRequest() + .queries( + Collections.singletonList( + new FormulaAndFunctionQueryDefinition( + new FormulaAndFunctionMetricQueryDefinition() + .dataSource( + FormulaAndFunctionMetricDataSource + .METRICS) + .name("query1") + .query( + "avg:system.cpu.user{*} by" + + " {service}") + .aggregator( + FormulaAndFunctionMetricAggregation + .AVG)))) + .formulas( + Collections.singletonList( + new WidgetFormula().formula("query1"))) + .sort( + new WidgetSortBy() + .count(10L) + .orderBy( + Collections.singletonList( + new WidgetSortOrderBy( + new WidgetGroupSort() + .type(GroupType.GROUP) + .name("service") + .order( + WidgetSort + .ASCENDING))))) + .responseFormat( + FormulaAndFunctionResponseFormat.SCALAR))))))) + .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/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDefinition.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDefinition.java new file mode 100644 index 00000000000..430d569519f --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDefinition.java @@ -0,0 +1,383 @@ +/* + * 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.JsonCreator; +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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * The bar chart visualization displays categorical data using vertical bars, allowing you to + * compare values across different groups. + */ +@JsonPropertyOrder({ + BarChartWidgetDefinition.JSON_PROPERTY_CUSTOM_LINKS, + BarChartWidgetDefinition.JSON_PROPERTY_REQUESTS, + BarChartWidgetDefinition.JSON_PROPERTY_STYLE, + BarChartWidgetDefinition.JSON_PROPERTY_TIME, + BarChartWidgetDefinition.JSON_PROPERTY_TITLE, + BarChartWidgetDefinition.JSON_PROPERTY_TITLE_ALIGN, + BarChartWidgetDefinition.JSON_PROPERTY_TITLE_SIZE, + BarChartWidgetDefinition.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class BarChartWidgetDefinition { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CUSTOM_LINKS = "custom_links"; + private List customLinks = null; + + public static final String JSON_PROPERTY_REQUESTS = "requests"; + private List requests = new ArrayList<>(); + + public static final String JSON_PROPERTY_STYLE = "style"; + private BarChartWidgetStyle style; + + public static final String JSON_PROPERTY_TIME = "time"; + private WidgetTime time; + + public static final String JSON_PROPERTY_TITLE = "title"; + private String title; + + public static final String JSON_PROPERTY_TITLE_ALIGN = "title_align"; + private WidgetTextAlign titleAlign; + + public static final String JSON_PROPERTY_TITLE_SIZE = "title_size"; + private String titleSize; + + public static final String JSON_PROPERTY_TYPE = "type"; + private BarChartWidgetDefinitionType type = BarChartWidgetDefinitionType.BAR_CHART; + + public BarChartWidgetDefinition() {} + + @JsonCreator + public BarChartWidgetDefinition( + @JsonProperty(required = true, value = JSON_PROPERTY_REQUESTS) + List requests, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + BarChartWidgetDefinitionType type) { + this.requests = requests; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public BarChartWidgetDefinition customLinks(List customLinks) { + this.customLinks = customLinks; + for (WidgetCustomLink item : customLinks) { + this.unparsed |= item.unparsed; + } + return this; + } + + public BarChartWidgetDefinition addCustomLinksItem(WidgetCustomLink customLinksItem) { + if (this.customLinks == null) { + this.customLinks = new ArrayList<>(); + } + this.customLinks.add(customLinksItem); + this.unparsed |= customLinksItem.unparsed; + return this; + } + + /** + * List of custom links. + * + * @return customLinks + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CUSTOM_LINKS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getCustomLinks() { + return customLinks; + } + + public void setCustomLinks(List customLinks) { + this.customLinks = customLinks; + } + + public BarChartWidgetDefinition requests(List requests) { + this.requests = requests; + for (BarChartWidgetRequest item : requests) { + this.unparsed |= item.unparsed; + } + return this; + } + + public BarChartWidgetDefinition addRequestsItem(BarChartWidgetRequest requestsItem) { + this.requests.add(requestsItem); + this.unparsed |= requestsItem.unparsed; + return this; + } + + /** + * List of bar chart widget requests. + * + * @return requests + */ + @JsonProperty(JSON_PROPERTY_REQUESTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getRequests() { + return requests; + } + + public void setRequests(List requests) { + this.requests = requests; + } + + public BarChartWidgetDefinition style(BarChartWidgetStyle style) { + this.style = style; + this.unparsed |= style.unparsed; + return this; + } + + /** + * Style customization for a bar chart widget. + * + * @return style + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STYLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BarChartWidgetStyle getStyle() { + return style; + } + + public void setStyle(BarChartWidgetStyle style) { + this.style = style; + } + + public BarChartWidgetDefinition time(WidgetTime time) { + this.time = time; + this.unparsed |= time.unparsed; + return this; + } + + /** + * Time setting for the widget. + * + * @return time + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetTime getTime() { + return time; + } + + public void setTime(WidgetTime time) { + this.time = time; + } + + public BarChartWidgetDefinition title(String title) { + this.title = title; + return this; + } + + /** + * Title of your widget. + * + * @return title + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public BarChartWidgetDefinition titleAlign(WidgetTextAlign titleAlign) { + this.titleAlign = titleAlign; + this.unparsed |= !titleAlign.isValid(); + return this; + } + + /** + * How to align the text on the widget. + * + * @return titleAlign + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE_ALIGN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetTextAlign getTitleAlign() { + return titleAlign; + } + + public void setTitleAlign(WidgetTextAlign titleAlign) { + if (!titleAlign.isValid()) { + this.unparsed = true; + } + this.titleAlign = titleAlign; + } + + public BarChartWidgetDefinition titleSize(String titleSize) { + this.titleSize = titleSize; + return this; + } + + /** + * Size of the title. + * + * @return titleSize + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE_SIZE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitleSize() { + return titleSize; + } + + public void setTitleSize(String titleSize) { + this.titleSize = titleSize; + } + + public BarChartWidgetDefinition type(BarChartWidgetDefinitionType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * Type of the bar chart widget. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public BarChartWidgetDefinitionType getType() { + return type; + } + + public void setType(BarChartWidgetDefinitionType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * 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 BarChartWidgetDefinition + */ + @JsonAnySetter + public BarChartWidgetDefinition 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 BarChartWidgetDefinition object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BarChartWidgetDefinition barChartWidgetDefinition = (BarChartWidgetDefinition) o; + return Objects.equals(this.customLinks, barChartWidgetDefinition.customLinks) + && Objects.equals(this.requests, barChartWidgetDefinition.requests) + && Objects.equals(this.style, barChartWidgetDefinition.style) + && Objects.equals(this.time, barChartWidgetDefinition.time) + && Objects.equals(this.title, barChartWidgetDefinition.title) + && Objects.equals(this.titleAlign, barChartWidgetDefinition.titleAlign) + && Objects.equals(this.titleSize, barChartWidgetDefinition.titleSize) + && Objects.equals(this.type, barChartWidgetDefinition.type) + && Objects.equals(this.additionalProperties, barChartWidgetDefinition.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + customLinks, + requests, + style, + time, + title, + titleAlign, + titleSize, + type, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BarChartWidgetDefinition {\n"); + sb.append(" customLinks: ").append(toIndentedString(customLinks)).append("\n"); + sb.append(" requests: ").append(toIndentedString(requests)).append("\n"); + sb.append(" style: ").append(toIndentedString(style)).append("\n"); + sb.append(" time: ").append(toIndentedString(time)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + 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(" 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/BarChartWidgetDefinitionType.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDefinitionType.java new file mode 100644 index 00000000000..3c858f9d899 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDefinitionType.java @@ -0,0 +1,56 @@ +/* + * 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.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Type of the bar chart widget. */ +@JsonSerialize(using = BarChartWidgetDefinitionType.BarChartWidgetDefinitionTypeSerializer.class) +public class BarChartWidgetDefinitionType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("bar_chart")); + + public static final BarChartWidgetDefinitionType BAR_CHART = + new BarChartWidgetDefinitionType("bar_chart"); + + BarChartWidgetDefinitionType(String value) { + super(value, allowedValues); + } + + public static class BarChartWidgetDefinitionTypeSerializer + extends StdSerializer { + public BarChartWidgetDefinitionTypeSerializer(Class t) { + super(t); + } + + public BarChartWidgetDefinitionTypeSerializer() { + this(null); + } + + @Override + public void serialize( + BarChartWidgetDefinitionType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static BarChartWidgetDefinitionType fromValue(String value) { + return new BarChartWidgetDefinitionType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDisplay.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDisplay.java new file mode 100644 index 00000000000..e734023c31e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetDisplay.java @@ -0,0 +1,278 @@ +/* + * 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.datadog.api.client.AbstractOpenApiSchema; +import com.datadog.api.client.JSON; +import com.datadog.api.client.UnparsedObject; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import jakarta.ws.rs.core.GenericType; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +@JsonDeserialize(using = BarChartWidgetDisplay.BarChartWidgetDisplayDeserializer.class) +@JsonSerialize(using = BarChartWidgetDisplay.BarChartWidgetDisplaySerializer.class) +public class BarChartWidgetDisplay extends AbstractOpenApiSchema { + private static final Logger log = Logger.getLogger(BarChartWidgetDisplay.class.getName()); + + @JsonIgnore public boolean unparsed = false; + + public static class BarChartWidgetDisplaySerializer extends StdSerializer { + public BarChartWidgetDisplaySerializer(Class t) { + super(t); + } + + public BarChartWidgetDisplaySerializer() { + this(null); + } + + @Override + public void serialize( + BarChartWidgetDisplay value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.getActualInstance()); + } + } + + public static class BarChartWidgetDisplayDeserializer + extends StdDeserializer { + public BarChartWidgetDisplayDeserializer() { + this(BarChartWidgetDisplay.class); + } + + public BarChartWidgetDisplayDeserializer(Class vc) { + super(vc); + } + + @Override + public BarChartWidgetDisplay deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException, JsonProcessingException { + JsonNode tree = jp.readValueAsTree(); + Object deserialized = null; + Object tmp = null; + boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS); + int match = 0; + JsonToken token = tree.traverse(jp.getCodec()).nextToken(); + // deserialize BarChartWidgetStacked + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (BarChartWidgetStacked.class.equals(Integer.class) + || BarChartWidgetStacked.class.equals(Long.class) + || BarChartWidgetStacked.class.equals(Float.class) + || BarChartWidgetStacked.class.equals(Double.class) + || BarChartWidgetStacked.class.equals(Boolean.class) + || BarChartWidgetStacked.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((BarChartWidgetStacked.class.equals(Integer.class) + || BarChartWidgetStacked.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((BarChartWidgetStacked.class.equals(Float.class) + || BarChartWidgetStacked.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (BarChartWidgetStacked.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (BarChartWidgetStacked.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(BarChartWidgetStacked.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((BarChartWidgetStacked) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'BarChartWidgetStacked'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log(Level.FINER, "Input data does not match schema 'BarChartWidgetStacked'", e); + } + + // deserialize BarChartWidgetFlat + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (BarChartWidgetFlat.class.equals(Integer.class) + || BarChartWidgetFlat.class.equals(Long.class) + || BarChartWidgetFlat.class.equals(Float.class) + || BarChartWidgetFlat.class.equals(Double.class) + || BarChartWidgetFlat.class.equals(Boolean.class) + || BarChartWidgetFlat.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((BarChartWidgetFlat.class.equals(Integer.class) + || BarChartWidgetFlat.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((BarChartWidgetFlat.class.equals(Float.class) + || BarChartWidgetFlat.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (BarChartWidgetFlat.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (BarChartWidgetFlat.class.equals(String.class) && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(BarChartWidgetFlat.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((BarChartWidgetFlat) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'BarChartWidgetFlat'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log(Level.FINER, "Input data does not match schema 'BarChartWidgetFlat'", e); + } + + BarChartWidgetDisplay ret = new BarChartWidgetDisplay(); + if (match == 1) { + ret.setActualInstance(deserialized); + } else { + Map res = + new ObjectMapper() + .readValue( + tree.traverse(jp.getCodec()).readValueAsTree().toString(), + new TypeReference>() {}); + ret.setActualInstance(new UnparsedObject(res)); + } + return ret; + } + + /** Handle deserialization of the 'null' value. */ + @Override + public BarChartWidgetDisplay getNullValue(DeserializationContext ctxt) + throws JsonMappingException { + throw new JsonMappingException(ctxt.getParser(), "BarChartWidgetDisplay cannot be null"); + } + } + + // store a list of schema names defined in oneOf + public static final Map schemas = new HashMap(); + + public BarChartWidgetDisplay() { + super("oneOf", Boolean.FALSE); + } + + public BarChartWidgetDisplay(BarChartWidgetStacked o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + public BarChartWidgetDisplay(BarChartWidgetFlat o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + static { + schemas.put("BarChartWidgetStacked", new GenericType() {}); + schemas.put("BarChartWidgetFlat", new GenericType() {}); + JSON.registerDescendants(BarChartWidgetDisplay.class, Collections.unmodifiableMap(schemas)); + } + + @Override + public Map getSchemas() { + return BarChartWidgetDisplay.schemas; + } + + /** + * Set the instance that matches the oneOf child schema, check the instance parameter is valid + * against the oneOf child schemas: BarChartWidgetStacked, BarChartWidgetFlat + * + *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a + * composed schema (allOf, anyOf, oneOf). + */ + @Override + public void setActualInstance(Object instance) { + if (JSON.isInstanceOf(BarChartWidgetStacked.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + if (JSON.isInstanceOf(BarChartWidgetFlat.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + + if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + throw new RuntimeException( + "Invalid instance type. Must be BarChartWidgetStacked, BarChartWidgetFlat"); + } + + /** + * Get the actual instance, which can be the following: BarChartWidgetStacked, BarChartWidgetFlat + * + * @return The actual instance (BarChartWidgetStacked, BarChartWidgetFlat) + */ + @Override + public Object getActualInstance() { + return super.getActualInstance(); + } + + /** + * Get the actual instance of `BarChartWidgetStacked`. If the actual instance is not + * `BarChartWidgetStacked`, the ClassCastException will be thrown. + * + * @return The actual instance of `BarChartWidgetStacked` + * @throws ClassCastException if the instance is not `BarChartWidgetStacked` + */ + public BarChartWidgetStacked getBarChartWidgetStacked() throws ClassCastException { + return (BarChartWidgetStacked) super.getActualInstance(); + } + + /** + * Get the actual instance of `BarChartWidgetFlat`. If the actual instance is not + * `BarChartWidgetFlat`, the ClassCastException will be thrown. + * + * @return The actual instance of `BarChartWidgetFlat` + * @throws ClassCastException if the instance is not `BarChartWidgetFlat` + */ + public BarChartWidgetFlat getBarChartWidgetFlat() throws ClassCastException { + return (BarChartWidgetFlat) super.getActualInstance(); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetFlat.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetFlat.java new file mode 100644 index 00000000000..08d8ab34bb7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetFlat.java @@ -0,0 +1,148 @@ +/* + * 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.JsonCreator; +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; + +/** Bar chart widget flat display. */ +@JsonPropertyOrder({BarChartWidgetFlat.JSON_PROPERTY_TYPE}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class BarChartWidgetFlat { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_TYPE = "type"; + private BarChartWidgetFlatType type = BarChartWidgetFlatType.FLAT; + + public BarChartWidgetFlat() {} + + @JsonCreator + public BarChartWidgetFlat( + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) BarChartWidgetFlatType type) { + this.type = type; + this.unparsed |= !type.isValid(); + } + + public BarChartWidgetFlat type(BarChartWidgetFlatType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * Bar chart widget flat display type. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public BarChartWidgetFlatType getType() { + return type; + } + + public void setType(BarChartWidgetFlatType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * 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 BarChartWidgetFlat + */ + @JsonAnySetter + public BarChartWidgetFlat 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 BarChartWidgetFlat object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BarChartWidgetFlat barChartWidgetFlat = (BarChartWidgetFlat) o; + return Objects.equals(this.type, barChartWidgetFlat.type) + && Objects.equals(this.additionalProperties, barChartWidgetFlat.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BarChartWidgetFlat {\n"); + sb.append(" type: ").append(toIndentedString(type)).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/BarChartWidgetFlatType.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetFlatType.java new file mode 100644 index 00000000000..6eddaefca92 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetFlatType.java @@ -0,0 +1,55 @@ +/* + * 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.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Bar chart widget flat display type. */ +@JsonSerialize(using = BarChartWidgetFlatType.BarChartWidgetFlatTypeSerializer.class) +public class BarChartWidgetFlatType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("flat")); + + public static final BarChartWidgetFlatType FLAT = new BarChartWidgetFlatType("flat"); + + BarChartWidgetFlatType(String value) { + super(value, allowedValues); + } + + public static class BarChartWidgetFlatTypeSerializer + extends StdSerializer { + public BarChartWidgetFlatTypeSerializer(Class t) { + super(t); + } + + public BarChartWidgetFlatTypeSerializer() { + this(null); + } + + @Override + public void serialize( + BarChartWidgetFlatType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static BarChartWidgetFlatType fromValue(String value) { + return new BarChartWidgetFlatType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetLegend.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetLegend.java new file mode 100644 index 00000000000..04961094087 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetLegend.java @@ -0,0 +1,57 @@ +/* + * 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.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Bar chart widget stacked legend behavior. */ +@JsonSerialize(using = BarChartWidgetLegend.BarChartWidgetLegendSerializer.class) +public class BarChartWidgetLegend extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("automatic", "inline", "none")); + + public static final BarChartWidgetLegend AUTOMATIC = new BarChartWidgetLegend("automatic"); + public static final BarChartWidgetLegend INLINE = new BarChartWidgetLegend("inline"); + public static final BarChartWidgetLegend NONE = new BarChartWidgetLegend("none"); + + BarChartWidgetLegend(String value) { + super(value, allowedValues); + } + + public static class BarChartWidgetLegendSerializer extends StdSerializer { + public BarChartWidgetLegendSerializer(Class t) { + super(t); + } + + public BarChartWidgetLegendSerializer() { + this(null); + } + + @Override + public void serialize( + BarChartWidgetLegend value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static BarChartWidgetLegend fromValue(String value) { + return new BarChartWidgetLegend(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetRequest.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetRequest.java new file mode 100644 index 00000000000..49fe554882d --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetRequest.java @@ -0,0 +1,617 @@ +/* + * 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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Updated bar chart widget. */ +@JsonPropertyOrder({ + BarChartWidgetRequest.JSON_PROPERTY_APM_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_AUDIT_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_CONDITIONAL_FORMATS, + BarChartWidgetRequest.JSON_PROPERTY_EVENT_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_FORMULAS, + BarChartWidgetRequest.JSON_PROPERTY_LOG_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_NETWORK_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_PROCESS_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_PROFILE_METRICS_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_Q, + BarChartWidgetRequest.JSON_PROPERTY_QUERIES, + BarChartWidgetRequest.JSON_PROPERTY_RESPONSE_FORMAT, + BarChartWidgetRequest.JSON_PROPERTY_RUM_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_SECURITY_QUERY, + BarChartWidgetRequest.JSON_PROPERTY_SORT, + BarChartWidgetRequest.JSON_PROPERTY_STYLE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class BarChartWidgetRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_APM_QUERY = "apm_query"; + private LogQueryDefinition apmQuery; + + public static final String JSON_PROPERTY_AUDIT_QUERY = "audit_query"; + private LogQueryDefinition auditQuery; + + public static final String JSON_PROPERTY_CONDITIONAL_FORMATS = "conditional_formats"; + private List conditionalFormats = null; + + 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; + + public static final String JSON_PROPERTY_NETWORK_QUERY = "network_query"; + private LogQueryDefinition networkQuery; + + public static final String JSON_PROPERTY_PROCESS_QUERY = "process_query"; + private ProcessQueryDefinition processQuery; + + public static final String JSON_PROPERTY_PROFILE_METRICS_QUERY = "profile_metrics_query"; + private LogQueryDefinition profileMetricsQuery; + + 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_RESPONSE_FORMAT = "response_format"; + private FormulaAndFunctionResponseFormat responseFormat; + + public static final String JSON_PROPERTY_RUM_QUERY = "rum_query"; + private LogQueryDefinition rumQuery; + + public static final String JSON_PROPERTY_SECURITY_QUERY = "security_query"; + private LogQueryDefinition securityQuery; + + public static final String JSON_PROPERTY_SORT = "sort"; + private WidgetSortBy sort; + + public static final String JSON_PROPERTY_STYLE = "style"; + private WidgetRequestStyle style; + + public BarChartWidgetRequest apmQuery(LogQueryDefinition apmQuery) { + this.apmQuery = apmQuery; + this.unparsed |= apmQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return apmQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_APM_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getApmQuery() { + return apmQuery; + } + + public void setApmQuery(LogQueryDefinition apmQuery) { + this.apmQuery = apmQuery; + } + + public BarChartWidgetRequest auditQuery(LogQueryDefinition auditQuery) { + this.auditQuery = auditQuery; + this.unparsed |= auditQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return auditQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_AUDIT_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getAuditQuery() { + return auditQuery; + } + + public void setAuditQuery(LogQueryDefinition auditQuery) { + this.auditQuery = auditQuery; + } + + public BarChartWidgetRequest conditionalFormats( + List conditionalFormats) { + this.conditionalFormats = conditionalFormats; + for (WidgetConditionalFormat item : conditionalFormats) { + this.unparsed |= item.unparsed; + } + return this; + } + + public BarChartWidgetRequest addConditionalFormatsItem( + WidgetConditionalFormat conditionalFormatsItem) { + if (this.conditionalFormats == null) { + this.conditionalFormats = new ArrayList<>(); + } + this.conditionalFormats.add(conditionalFormatsItem); + this.unparsed |= conditionalFormatsItem.unparsed; + return this; + } + + /** + * List of conditional formats. + * + * @return conditionalFormats + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CONDITIONAL_FORMATS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getConditionalFormats() { + return conditionalFormats; + } + + public void setConditionalFormats(List conditionalFormats) { + this.conditionalFormats = conditionalFormats; + } + + public BarChartWidgetRequest eventQuery(LogQueryDefinition eventQuery) { + this.eventQuery = eventQuery; + this.unparsed |= eventQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return eventQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EVENT_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getEventQuery() { + return eventQuery; + } + + public void setEventQuery(LogQueryDefinition eventQuery) { + this.eventQuery = eventQuery; + } + + public BarChartWidgetRequest formulas(List formulas) { + this.formulas = formulas; + for (WidgetFormula item : formulas) { + this.unparsed |= item.unparsed; + } + return this; + } + + public BarChartWidgetRequest 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 BarChartWidgetRequest logQuery(LogQueryDefinition logQuery) { + this.logQuery = logQuery; + this.unparsed |= logQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return logQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LOG_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getLogQuery() { + return logQuery; + } + + public void setLogQuery(LogQueryDefinition logQuery) { + this.logQuery = logQuery; + } + + public BarChartWidgetRequest networkQuery(LogQueryDefinition networkQuery) { + this.networkQuery = networkQuery; + this.unparsed |= networkQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return networkQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NETWORK_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getNetworkQuery() { + return networkQuery; + } + + public void setNetworkQuery(LogQueryDefinition networkQuery) { + this.networkQuery = networkQuery; + } + + public BarChartWidgetRequest processQuery(ProcessQueryDefinition processQuery) { + this.processQuery = processQuery; + this.unparsed |= processQuery.unparsed; + return this; + } + + /** + * The process query to use in the widget. + * + * @return processQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROCESS_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ProcessQueryDefinition getProcessQuery() { + return processQuery; + } + + public void setProcessQuery(ProcessQueryDefinition processQuery) { + this.processQuery = processQuery; + } + + public BarChartWidgetRequest profileMetricsQuery(LogQueryDefinition profileMetricsQuery) { + this.profileMetricsQuery = profileMetricsQuery; + this.unparsed |= profileMetricsQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return profileMetricsQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROFILE_METRICS_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getProfileMetricsQuery() { + return profileMetricsQuery; + } + + public void setProfileMetricsQuery(LogQueryDefinition profileMetricsQuery) { + this.profileMetricsQuery = profileMetricsQuery; + } + + public BarChartWidgetRequest q(String q) { + this.q = q; + return this; + } + + /** + * Widget query. + * + * @return q + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_Q) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getQ() { + return q; + } + + public void setQ(String q) { + this.q = q; + } + + public BarChartWidgetRequest queries(List queries) { + this.queries = queries; + for (FormulaAndFunctionQueryDefinition item : queries) { + this.unparsed |= item.unparsed; + } + return this; + } + + public BarChartWidgetRequest 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 BarChartWidgetRequest 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 BarChartWidgetRequest rumQuery(LogQueryDefinition rumQuery) { + this.rumQuery = rumQuery; + this.unparsed |= rumQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return rumQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RUM_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getRumQuery() { + return rumQuery; + } + + public void setRumQuery(LogQueryDefinition rumQuery) { + this.rumQuery = rumQuery; + } + + public BarChartWidgetRequest securityQuery(LogQueryDefinition securityQuery) { + this.securityQuery = securityQuery; + this.unparsed |= securityQuery.unparsed; + return this; + } + + /** + * The log query. + * + * @return securityQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SECURITY_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LogQueryDefinition getSecurityQuery() { + return securityQuery; + } + + public void setSecurityQuery(LogQueryDefinition securityQuery) { + this.securityQuery = securityQuery; + } + + public BarChartWidgetRequest sort(WidgetSortBy sort) { + this.sort = sort; + this.unparsed |= sort.unparsed; + return this; + } + + /** + * The controls for sorting the widget. + * + * @return sort + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SORT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetSortBy getSort() { + return sort; + } + + public void setSort(WidgetSortBy sort) { + this.sort = sort; + } + + public BarChartWidgetRequest style(WidgetRequestStyle style) { + this.style = style; + this.unparsed |= style.unparsed; + return this; + } + + /** + * Define request widget style. + * + * @return style + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STYLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetRequestStyle getStyle() { + return style; + } + + public void setStyle(WidgetRequestStyle style) { + this.style = style; + } + + /** + * 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 BarChartWidgetRequest + */ + @JsonAnySetter + public BarChartWidgetRequest 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 BarChartWidgetRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BarChartWidgetRequest barChartWidgetRequest = (BarChartWidgetRequest) o; + return Objects.equals(this.apmQuery, barChartWidgetRequest.apmQuery) + && Objects.equals(this.auditQuery, barChartWidgetRequest.auditQuery) + && Objects.equals(this.conditionalFormats, barChartWidgetRequest.conditionalFormats) + && Objects.equals(this.eventQuery, barChartWidgetRequest.eventQuery) + && Objects.equals(this.formulas, barChartWidgetRequest.formulas) + && Objects.equals(this.logQuery, barChartWidgetRequest.logQuery) + && Objects.equals(this.networkQuery, barChartWidgetRequest.networkQuery) + && Objects.equals(this.processQuery, barChartWidgetRequest.processQuery) + && Objects.equals(this.profileMetricsQuery, barChartWidgetRequest.profileMetricsQuery) + && Objects.equals(this.q, barChartWidgetRequest.q) + && Objects.equals(this.queries, barChartWidgetRequest.queries) + && Objects.equals(this.responseFormat, barChartWidgetRequest.responseFormat) + && Objects.equals(this.rumQuery, barChartWidgetRequest.rumQuery) + && Objects.equals(this.securityQuery, barChartWidgetRequest.securityQuery) + && Objects.equals(this.sort, barChartWidgetRequest.sort) + && Objects.equals(this.style, barChartWidgetRequest.style) + && Objects.equals(this.additionalProperties, barChartWidgetRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + apmQuery, + auditQuery, + conditionalFormats, + eventQuery, + formulas, + logQuery, + networkQuery, + processQuery, + profileMetricsQuery, + q, + queries, + responseFormat, + rumQuery, + securityQuery, + sort, + style, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BarChartWidgetRequest {\n"); + sb.append(" apmQuery: ").append(toIndentedString(apmQuery)).append("\n"); + sb.append(" auditQuery: ").append(toIndentedString(auditQuery)).append("\n"); + sb.append(" conditionalFormats: ").append(toIndentedString(conditionalFormats)).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"); + sb.append(" profileMetricsQuery: ") + .append(toIndentedString(profileMetricsQuery)) + .append("\n"); + sb.append(" q: ").append(toIndentedString(q)).append("\n"); + sb.append(" queries: ").append(toIndentedString(queries)).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(" sort: ").append(toIndentedString(sort)).append("\n"); + sb.append(" style: ").append(toIndentedString(style)).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/BarChartWidgetScaling.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetScaling.java new file mode 100644 index 00000000000..70feb86bbe2 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetScaling.java @@ -0,0 +1,56 @@ +/* + * 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.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Bar chart widget scaling definition. */ +@JsonSerialize(using = BarChartWidgetScaling.BarChartWidgetScalingSerializer.class) +public class BarChartWidgetScaling extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("absolute", "relative")); + + public static final BarChartWidgetScaling ABSOLUTE = new BarChartWidgetScaling("absolute"); + public static final BarChartWidgetScaling RELATIVE = new BarChartWidgetScaling("relative"); + + BarChartWidgetScaling(String value) { + super(value, allowedValues); + } + + public static class BarChartWidgetScalingSerializer extends StdSerializer { + public BarChartWidgetScalingSerializer(Class t) { + super(t); + } + + public BarChartWidgetScalingSerializer() { + this(null); + } + + @Override + public void serialize( + BarChartWidgetScaling value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static BarChartWidgetScaling fromValue(String value) { + return new BarChartWidgetScaling(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStacked.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStacked.java new file mode 100644 index 00000000000..9dd73a8abf5 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStacked.java @@ -0,0 +1,181 @@ +/* + * 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.JsonCreator; +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; + +/** Bar chart widget stacked display options. */ +@JsonPropertyOrder({ + BarChartWidgetStacked.JSON_PROPERTY_LEGEND, + BarChartWidgetStacked.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class BarChartWidgetStacked { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_LEGEND = "legend"; + private BarChartWidgetLegend legend; + + public static final String JSON_PROPERTY_TYPE = "type"; + private BarChartWidgetStackedType type = BarChartWidgetStackedType.STACKED; + + public BarChartWidgetStacked() {} + + @JsonCreator + public BarChartWidgetStacked( + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) BarChartWidgetStackedType type) { + this.type = type; + this.unparsed |= !type.isValid(); + } + + public BarChartWidgetStacked legend(BarChartWidgetLegend legend) { + this.legend = legend; + this.unparsed |= !legend.isValid(); + return this; + } + + /** + * Bar chart widget stacked legend behavior. + * + * @return legend + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LEGEND) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BarChartWidgetLegend getLegend() { + return legend; + } + + public void setLegend(BarChartWidgetLegend legend) { + if (!legend.isValid()) { + this.unparsed = true; + } + this.legend = legend; + } + + public BarChartWidgetStacked type(BarChartWidgetStackedType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * Bar chart widget stacked display type. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public BarChartWidgetStackedType getType() { + return type; + } + + public void setType(BarChartWidgetStackedType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * 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 BarChartWidgetStacked + */ + @JsonAnySetter + public BarChartWidgetStacked 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 BarChartWidgetStacked object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BarChartWidgetStacked barChartWidgetStacked = (BarChartWidgetStacked) o; + return Objects.equals(this.legend, barChartWidgetStacked.legend) + && Objects.equals(this.type, barChartWidgetStacked.type) + && Objects.equals(this.additionalProperties, barChartWidgetStacked.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(legend, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BarChartWidgetStacked {\n"); + sb.append(" legend: ").append(toIndentedString(legend)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).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/BarChartWidgetStackedType.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStackedType.java new file mode 100644 index 00000000000..95fb4f2201e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStackedType.java @@ -0,0 +1,55 @@ +/* + * 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.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Bar chart widget stacked display type. */ +@JsonSerialize(using = BarChartWidgetStackedType.BarChartWidgetStackedTypeSerializer.class) +public class BarChartWidgetStackedType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("stacked")); + + public static final BarChartWidgetStackedType STACKED = new BarChartWidgetStackedType("stacked"); + + BarChartWidgetStackedType(String value) { + super(value, allowedValues); + } + + public static class BarChartWidgetStackedTypeSerializer + extends StdSerializer { + public BarChartWidgetStackedTypeSerializer(Class t) { + super(t); + } + + public BarChartWidgetStackedTypeSerializer() { + this(null); + } + + @Override + public void serialize( + BarChartWidgetStackedType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static BarChartWidgetStackedType fromValue(String value) { + return new BarChartWidgetStackedType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStyle.java b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStyle.java new file mode 100644 index 00000000000..730f906d573 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/BarChartWidgetStyle.java @@ -0,0 +1,196 @@ +/* + * 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; + +/** Style customization for a bar chart widget. */ +@JsonPropertyOrder({ + BarChartWidgetStyle.JSON_PROPERTY_DISPLAY, + BarChartWidgetStyle.JSON_PROPERTY_PALETTE, + BarChartWidgetStyle.JSON_PROPERTY_SCALING +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class BarChartWidgetStyle { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DISPLAY = "display"; + private BarChartWidgetDisplay display; + + public static final String JSON_PROPERTY_PALETTE = "palette"; + private String palette; + + public static final String JSON_PROPERTY_SCALING = "scaling"; + private BarChartWidgetScaling scaling; + + public BarChartWidgetStyle display(BarChartWidgetDisplay display) { + this.display = display; + this.unparsed |= display.unparsed; + return this; + } + + /** + * Bar chart widget display options. + * + * @return display + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DISPLAY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BarChartWidgetDisplay getDisplay() { + return display; + } + + public void setDisplay(BarChartWidgetDisplay display) { + this.display = display; + } + + public BarChartWidgetStyle palette(String palette) { + this.palette = palette; + return this; + } + + /** + * Color palette to apply to the widget. + * + * @return palette + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PALETTE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPalette() { + return palette; + } + + public void setPalette(String palette) { + this.palette = palette; + } + + public BarChartWidgetStyle scaling(BarChartWidgetScaling scaling) { + this.scaling = scaling; + this.unparsed |= !scaling.isValid(); + return this; + } + + /** + * Bar chart widget scaling definition. + * + * @return scaling + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SCALING) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BarChartWidgetScaling getScaling() { + return scaling; + } + + public void setScaling(BarChartWidgetScaling scaling) { + if (!scaling.isValid()) { + this.unparsed = true; + } + this.scaling = scaling; + } + + /** + * 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 BarChartWidgetStyle + */ + @JsonAnySetter + public BarChartWidgetStyle 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 BarChartWidgetStyle object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BarChartWidgetStyle barChartWidgetStyle = (BarChartWidgetStyle) o; + return Objects.equals(this.display, barChartWidgetStyle.display) + && Objects.equals(this.palette, barChartWidgetStyle.palette) + && Objects.equals(this.scaling, barChartWidgetStyle.scaling) + && Objects.equals(this.additionalProperties, barChartWidgetStyle.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(display, palette, scaling, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BarChartWidgetStyle {\n"); + sb.append(" display: ").append(toIndentedString(display)).append("\n"); + sb.append(" palette: ").append(toIndentedString(palette)).append("\n"); + sb.append(" scaling: ").append(toIndentedString(scaling)).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/SplitGraphSourceWidgetDefinition.java b/src/main/java/com/datadog/api/client/v1/model/SplitGraphSourceWidgetDefinition.java index 8d34cc0c68e..1472d2c0ef0 100644 --- a/src/main/java/com/datadog/api/client/v1/model/SplitGraphSourceWidgetDefinition.java +++ b/src/main/java/com/datadog/api/client/v1/model/SplitGraphSourceWidgetDefinition.java @@ -83,6 +83,51 @@ public SplitGraphSourceWidgetDefinition deserialize(JsonParser jp, Deserializati boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS); int match = 0; JsonToken token = tree.traverse(jp.getCodec()).nextToken(); + // deserialize BarChartWidgetDefinition + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (BarChartWidgetDefinition.class.equals(Integer.class) + || BarChartWidgetDefinition.class.equals(Long.class) + || BarChartWidgetDefinition.class.equals(Float.class) + || BarChartWidgetDefinition.class.equals(Double.class) + || BarChartWidgetDefinition.class.equals(Boolean.class) + || BarChartWidgetDefinition.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((BarChartWidgetDefinition.class.equals(Integer.class) + || BarChartWidgetDefinition.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((BarChartWidgetDefinition.class.equals(Float.class) + || BarChartWidgetDefinition.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (BarChartWidgetDefinition.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (BarChartWidgetDefinition.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(BarChartWidgetDefinition.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((BarChartWidgetDefinition) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'BarChartWidgetDefinition'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log(Level.FINER, "Input data does not match schema 'BarChartWidgetDefinition'", e); + } + // deserialize ChangeWidgetDefinition try { boolean attemptParsing = true; @@ -518,6 +563,11 @@ public SplitGraphSourceWidgetDefinition() { super("oneOf", Boolean.FALSE); } + public SplitGraphSourceWidgetDefinition(BarChartWidgetDefinition o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + public SplitGraphSourceWidgetDefinition(ChangeWidgetDefinition o) { super("oneOf", Boolean.FALSE); setActualInstance(o); @@ -564,6 +614,7 @@ public SplitGraphSourceWidgetDefinition(TreeMapWidgetDefinition o) { } static { + schemas.put("BarChartWidgetDefinition", new GenericType() {}); schemas.put("ChangeWidgetDefinition", new GenericType() {}); schemas.put("GeomapWidgetDefinition", new GenericType() {}); schemas.put("QueryValueWidgetDefinition", new GenericType() {}); @@ -584,16 +635,20 @@ public Map getSchemas() { /** * Set the instance that matches the oneOf child schema, check the instance parameter is valid - * against the oneOf child schemas: ChangeWidgetDefinition, GeomapWidgetDefinition, - * QueryValueWidgetDefinition, ScatterPlotWidgetDefinition, SunburstWidgetDefinition, - * TableWidgetDefinition, TimeseriesWidgetDefinition, ToplistWidgetDefinition, - * TreeMapWidgetDefinition + * against the oneOf child schemas: BarChartWidgetDefinition, ChangeWidgetDefinition, + * GeomapWidgetDefinition, QueryValueWidgetDefinition, ScatterPlotWidgetDefinition, + * SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, + * ToplistWidgetDefinition, TreeMapWidgetDefinition * *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a * composed schema (allOf, anyOf, oneOf). */ @Override public void setActualInstance(Object instance) { + if (JSON.isInstanceOf(BarChartWidgetDefinition.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } if (JSON.isInstanceOf(ChangeWidgetDefinition.class, instance, new HashSet>())) { super.setActualInstance(instance); return; @@ -636,28 +691,39 @@ public void setActualInstance(Object instance) { return; } throw new RuntimeException( - "Invalid instance type. Must be ChangeWidgetDefinition, GeomapWidgetDefinition," - + " QueryValueWidgetDefinition, ScatterPlotWidgetDefinition, SunburstWidgetDefinition," - + " TableWidgetDefinition, TimeseriesWidgetDefinition, ToplistWidgetDefinition," - + " TreeMapWidgetDefinition"); + "Invalid instance type. Must be BarChartWidgetDefinition, ChangeWidgetDefinition," + + " GeomapWidgetDefinition, QueryValueWidgetDefinition, ScatterPlotWidgetDefinition," + + " SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition," + + " ToplistWidgetDefinition, TreeMapWidgetDefinition"); } /** - * Get the actual instance, which can be the following: ChangeWidgetDefinition, - * GeomapWidgetDefinition, QueryValueWidgetDefinition, ScatterPlotWidgetDefinition, - * SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, - * ToplistWidgetDefinition, TreeMapWidgetDefinition + * Get the actual instance, which can be the following: BarChartWidgetDefinition, + * ChangeWidgetDefinition, GeomapWidgetDefinition, QueryValueWidgetDefinition, + * ScatterPlotWidgetDefinition, SunburstWidgetDefinition, TableWidgetDefinition, + * TimeseriesWidgetDefinition, ToplistWidgetDefinition, TreeMapWidgetDefinition * - * @return The actual instance (ChangeWidgetDefinition, GeomapWidgetDefinition, - * QueryValueWidgetDefinition, ScatterPlotWidgetDefinition, SunburstWidgetDefinition, - * TableWidgetDefinition, TimeseriesWidgetDefinition, ToplistWidgetDefinition, - * TreeMapWidgetDefinition) + * @return The actual instance (BarChartWidgetDefinition, ChangeWidgetDefinition, + * GeomapWidgetDefinition, QueryValueWidgetDefinition, ScatterPlotWidgetDefinition, + * SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, + * ToplistWidgetDefinition, TreeMapWidgetDefinition) */ @Override public Object getActualInstance() { return super.getActualInstance(); } + /** + * Get the actual instance of `BarChartWidgetDefinition`. If the actual instance is not + * `BarChartWidgetDefinition`, the ClassCastException will be thrown. + * + * @return The actual instance of `BarChartWidgetDefinition` + * @throws ClassCastException if the instance is not `BarChartWidgetDefinition` + */ + public BarChartWidgetDefinition getBarChartWidgetDefinition() throws ClassCastException { + return (BarChartWidgetDefinition) super.getActualInstance(); + } + /** * Get the actual instance of `ChangeWidgetDefinition`. If the actual instance is not * `ChangeWidgetDefinition`, the ClassCastException will be thrown. diff --git a/src/main/java/com/datadog/api/client/v1/model/WidgetDefinition.java b/src/main/java/com/datadog/api/client/v1/model/WidgetDefinition.java index 7bd6b9a257c..aa6841cb55e 100644 --- a/src/main/java/com/datadog/api/client/v1/model/WidgetDefinition.java +++ b/src/main/java/com/datadog/api/client/v1/model/WidgetDefinition.java @@ -167,6 +167,51 @@ public WidgetDefinition deserialize(JsonParser jp, DeserializationContext ctxt) log.log(Level.FINER, "Input data does not match schema 'AlertValueWidgetDefinition'", e); } + // deserialize BarChartWidgetDefinition + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (BarChartWidgetDefinition.class.equals(Integer.class) + || BarChartWidgetDefinition.class.equals(Long.class) + || BarChartWidgetDefinition.class.equals(Float.class) + || BarChartWidgetDefinition.class.equals(Double.class) + || BarChartWidgetDefinition.class.equals(Boolean.class) + || BarChartWidgetDefinition.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((BarChartWidgetDefinition.class.equals(Integer.class) + || BarChartWidgetDefinition.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((BarChartWidgetDefinition.class.equals(Float.class) + || BarChartWidgetDefinition.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (BarChartWidgetDefinition.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (BarChartWidgetDefinition.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(BarChartWidgetDefinition.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((BarChartWidgetDefinition) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'BarChartWidgetDefinition'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log(Level.FINER, "Input data does not match schema 'BarChartWidgetDefinition'", e); + } + // deserialize ChangeWidgetDefinition try { boolean attemptParsing = true; @@ -1646,6 +1691,11 @@ public WidgetDefinition(AlertValueWidgetDefinition o) { setActualInstance(o); } + public WidgetDefinition(BarChartWidgetDefinition o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + public WidgetDefinition(ChangeWidgetDefinition o) { super("oneOf", Boolean.FALSE); setActualInstance(o); @@ -1809,6 +1859,7 @@ public WidgetDefinition(TreeMapWidgetDefinition o) { static { schemas.put("AlertGraphWidgetDefinition", new GenericType() {}); schemas.put("AlertValueWidgetDefinition", new GenericType() {}); + schemas.put("BarChartWidgetDefinition", new GenericType() {}); schemas.put("ChangeWidgetDefinition", new GenericType() {}); schemas.put("CheckStatusWidgetDefinition", new GenericType() {}); schemas.put("DistributionWidgetDefinition", new GenericType() {}); @@ -1855,17 +1906,17 @@ public Map getSchemas() { /** * Set the instance that matches the oneOf child schema, check the instance parameter is valid * against the oneOf child schemas: AlertGraphWidgetDefinition, AlertValueWidgetDefinition, - * ChangeWidgetDefinition, CheckStatusWidgetDefinition, DistributionWidgetDefinition, - * EventStreamWidgetDefinition, EventTimelineWidgetDefinition, FreeTextWidgetDefinition, - * FunnelWidgetDefinition, GeomapWidgetDefinition, GroupWidgetDefinition, HeatMapWidgetDefinition, - * HostMapWidgetDefinition, IFrameWidgetDefinition, ImageWidgetDefinition, - * ListStreamWidgetDefinition, LogStreamWidgetDefinition, MonitorSummaryWidgetDefinition, - * NoteWidgetDefinition, PowerpackWidgetDefinition, QueryValueWidgetDefinition, - * RunWorkflowWidgetDefinition, SLOListWidgetDefinition, SLOWidgetDefinition, - * ScatterPlotWidgetDefinition, ServiceMapWidgetDefinition, ServiceSummaryWidgetDefinition, - * SplitGraphWidgetDefinition, SunburstWidgetDefinition, TableWidgetDefinition, - * TimeseriesWidgetDefinition, ToplistWidgetDefinition, TopologyMapWidgetDefinition, - * TreeMapWidgetDefinition + * BarChartWidgetDefinition, ChangeWidgetDefinition, CheckStatusWidgetDefinition, + * DistributionWidgetDefinition, EventStreamWidgetDefinition, EventTimelineWidgetDefinition, + * FreeTextWidgetDefinition, FunnelWidgetDefinition, GeomapWidgetDefinition, + * GroupWidgetDefinition, HeatMapWidgetDefinition, HostMapWidgetDefinition, + * IFrameWidgetDefinition, ImageWidgetDefinition, ListStreamWidgetDefinition, + * LogStreamWidgetDefinition, MonitorSummaryWidgetDefinition, NoteWidgetDefinition, + * PowerpackWidgetDefinition, QueryValueWidgetDefinition, RunWorkflowWidgetDefinition, + * SLOListWidgetDefinition, SLOWidgetDefinition, ScatterPlotWidgetDefinition, + * ServiceMapWidgetDefinition, ServiceSummaryWidgetDefinition, SplitGraphWidgetDefinition, + * SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, + * ToplistWidgetDefinition, TopologyMapWidgetDefinition, TreeMapWidgetDefinition * *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a * composed schema (allOf, anyOf, oneOf). @@ -1880,6 +1931,10 @@ public void setActualInstance(Object instance) { super.setActualInstance(instance); return; } + if (JSON.isInstanceOf(BarChartWidgetDefinition.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } if (JSON.isInstanceOf(ChangeWidgetDefinition.class, instance, new HashSet>())) { super.setActualInstance(instance); return; @@ -2017,46 +2072,47 @@ public void setActualInstance(Object instance) { } throw new RuntimeException( "Invalid instance type. Must be AlertGraphWidgetDefinition, AlertValueWidgetDefinition," - + " ChangeWidgetDefinition, CheckStatusWidgetDefinition, DistributionWidgetDefinition," - + " EventStreamWidgetDefinition, EventTimelineWidgetDefinition," - + " FreeTextWidgetDefinition, FunnelWidgetDefinition, GeomapWidgetDefinition," - + " GroupWidgetDefinition, HeatMapWidgetDefinition, HostMapWidgetDefinition," - + " IFrameWidgetDefinition, ImageWidgetDefinition, ListStreamWidgetDefinition," - + " LogStreamWidgetDefinition, MonitorSummaryWidgetDefinition, NoteWidgetDefinition," - + " PowerpackWidgetDefinition, QueryValueWidgetDefinition, RunWorkflowWidgetDefinition," - + " SLOListWidgetDefinition, SLOWidgetDefinition, ScatterPlotWidgetDefinition," - + " ServiceMapWidgetDefinition, ServiceSummaryWidgetDefinition," - + " SplitGraphWidgetDefinition, SunburstWidgetDefinition, TableWidgetDefinition," - + " TimeseriesWidgetDefinition, ToplistWidgetDefinition, TopologyMapWidgetDefinition," - + " TreeMapWidgetDefinition"); + + " BarChartWidgetDefinition, ChangeWidgetDefinition, CheckStatusWidgetDefinition," + + " DistributionWidgetDefinition, EventStreamWidgetDefinition," + + " EventTimelineWidgetDefinition, FreeTextWidgetDefinition, FunnelWidgetDefinition," + + " GeomapWidgetDefinition, GroupWidgetDefinition, HeatMapWidgetDefinition," + + " HostMapWidgetDefinition, IFrameWidgetDefinition, ImageWidgetDefinition," + + " ListStreamWidgetDefinition, LogStreamWidgetDefinition," + + " MonitorSummaryWidgetDefinition, NoteWidgetDefinition, PowerpackWidgetDefinition," + + " QueryValueWidgetDefinition, RunWorkflowWidgetDefinition, SLOListWidgetDefinition," + + " SLOWidgetDefinition, ScatterPlotWidgetDefinition, ServiceMapWidgetDefinition," + + " ServiceSummaryWidgetDefinition, SplitGraphWidgetDefinition," + + " SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition," + + " ToplistWidgetDefinition, TopologyMapWidgetDefinition, TreeMapWidgetDefinition"); } /** * Get the actual instance, which can be the following: AlertGraphWidgetDefinition, - * AlertValueWidgetDefinition, ChangeWidgetDefinition, CheckStatusWidgetDefinition, - * DistributionWidgetDefinition, EventStreamWidgetDefinition, EventTimelineWidgetDefinition, - * FreeTextWidgetDefinition, FunnelWidgetDefinition, GeomapWidgetDefinition, - * GroupWidgetDefinition, HeatMapWidgetDefinition, HostMapWidgetDefinition, - * IFrameWidgetDefinition, ImageWidgetDefinition, ListStreamWidgetDefinition, - * LogStreamWidgetDefinition, MonitorSummaryWidgetDefinition, NoteWidgetDefinition, - * PowerpackWidgetDefinition, QueryValueWidgetDefinition, RunWorkflowWidgetDefinition, - * SLOListWidgetDefinition, SLOWidgetDefinition, ScatterPlotWidgetDefinition, - * ServiceMapWidgetDefinition, ServiceSummaryWidgetDefinition, SplitGraphWidgetDefinition, - * SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, - * ToplistWidgetDefinition, TopologyMapWidgetDefinition, TreeMapWidgetDefinition + * AlertValueWidgetDefinition, BarChartWidgetDefinition, ChangeWidgetDefinition, + * CheckStatusWidgetDefinition, DistributionWidgetDefinition, EventStreamWidgetDefinition, + * EventTimelineWidgetDefinition, FreeTextWidgetDefinition, FunnelWidgetDefinition, + * GeomapWidgetDefinition, GroupWidgetDefinition, HeatMapWidgetDefinition, + * HostMapWidgetDefinition, IFrameWidgetDefinition, ImageWidgetDefinition, + * ListStreamWidgetDefinition, LogStreamWidgetDefinition, MonitorSummaryWidgetDefinition, + * NoteWidgetDefinition, PowerpackWidgetDefinition, QueryValueWidgetDefinition, + * RunWorkflowWidgetDefinition, SLOListWidgetDefinition, SLOWidgetDefinition, + * ScatterPlotWidgetDefinition, ServiceMapWidgetDefinition, ServiceSummaryWidgetDefinition, + * SplitGraphWidgetDefinition, SunburstWidgetDefinition, TableWidgetDefinition, + * TimeseriesWidgetDefinition, ToplistWidgetDefinition, TopologyMapWidgetDefinition, + * TreeMapWidgetDefinition * * @return The actual instance (AlertGraphWidgetDefinition, AlertValueWidgetDefinition, - * ChangeWidgetDefinition, CheckStatusWidgetDefinition, DistributionWidgetDefinition, - * EventStreamWidgetDefinition, EventTimelineWidgetDefinition, FreeTextWidgetDefinition, - * FunnelWidgetDefinition, GeomapWidgetDefinition, GroupWidgetDefinition, - * HeatMapWidgetDefinition, HostMapWidgetDefinition, IFrameWidgetDefinition, - * ImageWidgetDefinition, ListStreamWidgetDefinition, LogStreamWidgetDefinition, - * MonitorSummaryWidgetDefinition, NoteWidgetDefinition, PowerpackWidgetDefinition, - * QueryValueWidgetDefinition, RunWorkflowWidgetDefinition, SLOListWidgetDefinition, - * SLOWidgetDefinition, ScatterPlotWidgetDefinition, ServiceMapWidgetDefinition, - * ServiceSummaryWidgetDefinition, SplitGraphWidgetDefinition, SunburstWidgetDefinition, - * TableWidgetDefinition, TimeseriesWidgetDefinition, ToplistWidgetDefinition, - * TopologyMapWidgetDefinition, TreeMapWidgetDefinition) + * BarChartWidgetDefinition, ChangeWidgetDefinition, CheckStatusWidgetDefinition, + * DistributionWidgetDefinition, EventStreamWidgetDefinition, EventTimelineWidgetDefinition, + * FreeTextWidgetDefinition, FunnelWidgetDefinition, GeomapWidgetDefinition, + * GroupWidgetDefinition, HeatMapWidgetDefinition, HostMapWidgetDefinition, + * IFrameWidgetDefinition, ImageWidgetDefinition, ListStreamWidgetDefinition, + * LogStreamWidgetDefinition, MonitorSummaryWidgetDefinition, NoteWidgetDefinition, + * PowerpackWidgetDefinition, QueryValueWidgetDefinition, RunWorkflowWidgetDefinition, + * SLOListWidgetDefinition, SLOWidgetDefinition, ScatterPlotWidgetDefinition, + * ServiceMapWidgetDefinition, ServiceSummaryWidgetDefinition, SplitGraphWidgetDefinition, + * SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, + * ToplistWidgetDefinition, TopologyMapWidgetDefinition, TreeMapWidgetDefinition) */ @Override public Object getActualInstance() { @@ -2085,6 +2141,17 @@ public AlertValueWidgetDefinition getAlertValueWidgetDefinition() throws ClassCa return (AlertValueWidgetDefinition) super.getActualInstance(); } + /** + * Get the actual instance of `BarChartWidgetDefinition`. If the actual instance is not + * `BarChartWidgetDefinition`, the ClassCastException will be thrown. + * + * @return The actual instance of `BarChartWidgetDefinition` + * @throws ClassCastException if the instance is not `BarChartWidgetDefinition` + */ + public BarChartWidgetDefinition getBarChartWidgetDefinition() throws ClassCastException { + return (BarChartWidgetDefinition) super.getActualInstance(); + } + /** * Get the actual instance of `ChangeWidgetDefinition`. If the actual instance is not * `ChangeWidgetDefinition`, the ClassCastException will be thrown. diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.freeze new file mode 100644 index 00000000000..84e3901971d --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.freeze @@ -0,0 +1 @@ +2025-12-15T21:25:35.069Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.json new file mode 100644 index 00000000000..c05cb5f8a31 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"description\":\"\",\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified-1765833935\",\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"name\":\"service\",\"order\":\"asc\",\"type\":\"group\"}]}}],\"style\":{\"display\":{\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"bar_chart\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"6yv-ayr-nyv\",\"title\":\"Test-Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified-1765833935\",\"description\":\"\",\"author_handle\":\"jessica.sylvester@datadoghq.com\",\"author_name\":\"Jessica Sylvester\",\"layout_type\":\"free\",\"url\":\"/dashboard/6yv-ayr-nyv/test-createanewdashboardwithabarchartwidgetwithstackedtypeandnolegendspecified-1\",\"template_variables\":[],\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"name\":\"service\",\"order\":\"asc\",\"type\":\"group\"}]}}],\"style\":{\"display\":{\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"bar_chart\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":747608743840054}],\"notify_list\":[],\"created_at\":\"2025-12-15T21:25:35.211465+00:00\",\"modified_at\":\"2025-12-15T21:25:35.211465+00:00\",\"restricted_roles\":[]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "95489bd9-9bbf-69f2-4e3f-086db12e9591" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/6yv-ayr-nyv", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"6yv-ayr-nyv\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "15d53983-ac64-1591-b711-0cf6a232a55f" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget.freeze new file mode 100644 index 00000000000..cbf1cd99173 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget.freeze @@ -0,0 +1 @@ +2025-12-15T21:26:18.139Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget.json new file mode 100644 index 00000000000..b015e46563e --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"description\":\"\",\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_bar_chart_widget-1765833978\",\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"index\":0,\"order\":\"desc\",\"type\":\"formula\"}]}}],\"style\":{\"display\":{\"legend\":\"inline\",\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"bar_chart\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"jnt-fik-esx\",\"title\":\"Test-Create_a_new_dashboard_with_bar_chart_widget-1765833978\",\"description\":\"\",\"author_handle\":\"jessica.sylvester@datadoghq.com\",\"author_name\":\"Jessica Sylvester\",\"layout_type\":\"free\",\"url\":\"/dashboard/jnt-fik-esx/test-createanewdashboardwithbarchartwidget-1765833978\",\"template_variables\":[],\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"index\":0,\"order\":\"desc\",\"type\":\"formula\"}]}}],\"style\":{\"display\":{\"legend\":\"inline\",\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"bar_chart\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":4318878693632821}],\"notify_list\":[],\"created_at\":\"2025-12-15T21:26:18.283708+00:00\",\"modified_at\":\"2025-12-15T21:26:18.283708+00:00\",\"restricted_roles\":[]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "74d124e3-c042-4c73-813a-3f4e33dda1ff" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/jnt-fik-esx", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"jnt-fik-esx\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "94ec246c-57b6-fd16-4507-263c42db9f19" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.freeze new file mode 100644 index 00000000000..66da6ecb4a7 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.freeze @@ -0,0 +1 @@ +2025-12-15T21:26:29.455Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.json new file mode 100644 index 00000000000..15f308f2615 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"description\":\"\",\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group-1765833989\",\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"name\":\"service\",\"order\":\"asc\",\"type\":\"group\"}]}}],\"style\":{\"display\":{\"legend\":\"inline\",\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"bar_chart\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"d7t-dfe-vuh\",\"title\":\"Test-Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group-1765833989\",\"description\":\"\",\"author_handle\":\"jessica.sylvester@datadoghq.com\",\"author_name\":\"Jessica Sylvester\",\"layout_type\":\"free\",\"url\":\"/dashboard/d7t-dfe-vuh/test-createanewdashboardwithbarchartwidgetsortedbygroup-1765833989\",\"template_variables\":[],\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"name\":\"service\",\"order\":\"asc\",\"type\":\"group\"}]}}],\"style\":{\"display\":{\"legend\":\"inline\",\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"bar_chart\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":3540992741229512}],\"notify_list\":[],\"created_at\":\"2025-12-15T21:26:29.666161+00:00\",\"modified_at\":\"2025-12-15T21:26:29.666161+00:00\",\"restricted_roles\":[]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "d33120af-c0f7-8389-3035-8d1dfdc8f76d" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/d7t-dfe-vuh", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"d7t-dfe-vuh\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "9230fbb6-eb54-9cf9-f40c-a7ae4037a7b0" + } +] \ 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..43640d8a82c 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 @@ -106,6 +106,19 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].profile_metrics_query.compute.facet" is equal to "@prof_core_cpu_cores" And the response "widgets[0].definition.requests[0].profile_metrics_query.compute.aggregation" is equal to "sum" + @skip-terraform-config @skip-typescript @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with a bar_chart widget with stacked type and no legend specified + Given new "CreateDashboard" request + And body with value {"title":"{{ unique }}","description":"","widgets":[{"layout":{"x":0,"y":0,"width":47,"height":15},"definition":{"title":"","title_size":"16","title_align":"left","time":{},"style":{"display": {"type": "stacked"},"scaling": "relative","palette": "dog_classic"},"type":"bar_chart","requests":[{"queries":[{"data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} by {service}","aggregator":"avg"}],"formulas":[{"formula":"query1"}],"sort":{"count":10,"order_by":[{"type":"group","name":"service","order":"asc"}]},"response_format":"scalar"}]}}],"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 "bar_chart" + And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "asc" + And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group" + And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service" + And the response "widgets[0].definition.style.display.type" is equal to "stacked" + And the response "widgets[0].definition.style.display" does not have field "legend" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with a change widget using formulas and functions slo query Given there is a valid "slo" in the system @@ -336,6 +349,28 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].columns[0].width" is equal to "auto" And the response "widgets[0].definition.requests[0].query.data_source" is equal to "apm_issue_stream" + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with bar_chart widget + Given new "CreateDashboard" request + And body from file "dashboards_json_payload/bar_chart_widget.json" + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.type" is equal to "bar_chart" + And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "desc" + And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "formula" + And the response "widgets[0].definition.requests[0].sort.order_by[0].index" is equal to 0 + + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with bar_chart widget sorted by group + Given new "CreateDashboard" request + And body with value {"title":"{{ unique }}","description":"","widgets":[{"layout":{"x":0,"y":0,"width":47,"height":15},"definition":{"title":"","title_size":"16","title_align":"left","time":{},"style":{"display": {"type": "stacked","legend": "inline"},"scaling": "relative","palette": "dog_classic"},"type":"bar_chart","requests":[{"queries":[{"data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} by {service}","aggregator":"avg"}],"formulas":[{"formula":"query1"}],"sort":{"count":10,"order_by":[{"type":"group","name":"service","order":"asc"}]},"response_format":"scalar"}]}}],"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 "bar_chart" + And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "asc" + And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group" + And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with check_status widget Given new "CreateDashboard" request diff --git a/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/bar_chart_widget.json b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/bar_chart_widget.json new file mode 100644 index 00000000000..0fac4d091bf --- /dev/null +++ b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/bar_chart_widget.json @@ -0,0 +1,66 @@ +{ + "title":"{{ unique }}", + "description":"", + "widgets":[ + { + "layout":{ + "x":0, + "y":0, + "width":47, + "height":15 + }, + "definition":{ + "title":"", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "style":{ + "display": { + "type": "stacked", + "legend": "inline" + }, + "scaling": "relative", + "palette": "dog_classic" + }, + "type":"bar_chart", + "requests":[ + { + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:system.cpu.user{*} by {service}", + "aggregator":"avg" + } + ], + "formulas":[ + { + "formula":"query1" + } + ], + "sort": { + "count":10, + "order_by":[ + { + "type":"formula", + "index":0, + "order":"desc" + } + ] + }, + "response_format":"scalar" + } + ] + } + } + ], + "template_variables":[ + + ], + "layout_type":"free", + "notify_list":[ + + ] +}