From 35518b776ce1da4a043896113d4815a9157bcb1e Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 14 Apr 2026 15:40:44 +0000 Subject: [PATCH] Regenerate client from commit a8278b6 of spec repo --- .generator/schemas/v1/openapi.yaml | 110 +++++++- .../CreateDashboard_2342457693.java | 59 ++++- .../ScatterPlotWidgetDefinitionRequests.java | 6 +- .../ScatterplotDataProjectionDimension.java | 236 +++++++++++++++++ .../ScatterplotDataProjectionProjection.java | 195 ++++++++++++++ ...atterplotDataProjectionProjectionType.java | 63 +++++ .../model/ScatterplotDataProjectionQuery.java | 249 ++++++++++++++++++ ...ScatterplotDataProjectionQueryStorage.java | 85 ++++++ .../v1/model/ScatterplotTableRequest.java | 133 +++++++++- .../v1/model/ScatterplotTableRequestType.java | 58 ++++ ...w_dashboard_with_scatterplot_widget.freeze | 2 +- ...new_dashboard_with_scatterplot_widget.json | 12 +- .../api/client/v1/api/dashboards.feature | 7 + .../scatterplot_widget.json | 49 ++++ 14 files changed, 1251 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionDimension.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionProjection.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionProjectionType.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionQuery.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionQueryStorage.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequestType.java diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 6ccf9dc7662..3d139b2f3b3 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -13325,6 +13325,88 @@ components: type: string x-enum-varnames: - SCATTERPLOT + ScatterplotDataProjectionDimension: + description: A single dimension mapping for a scatterplot data projection. + properties: + alias: + description: Display alias for the dimension. + type: string + column: + description: The column name from the data source. + example: duration + type: string + dimension: + $ref: "#/components/schemas/ScatterplotDimension" + number_format: + $ref: "#/components/schemas/WidgetNumberFormat" + required: + - column + - dimension + type: object + ScatterplotDataProjectionProjection: + description: The projection configuration for a scatterplot data projection request. + properties: + dimensions: + description: Dimension mappings for the scatterplot axes. + items: + $ref: "#/components/schemas/ScatterplotDataProjectionDimension" + type: array + type: + $ref: "#/components/schemas/ScatterplotDataProjectionProjectionType" + required: + - type + - dimensions + type: object + ScatterplotDataProjectionProjectionType: + description: The type of the scatterplot data projection. + enum: + - scatterplot + example: scatterplot + type: string + x-enum-varnames: + - SCATTERPLOT + ScatterplotDataProjectionQuery: + description: The query for a scatterplot data projection request. + properties: + data_source: + $ref: "#/components/schemas/FormulaAndFunctionEventsDataSource" + indexes: + description: Indexes to search. + items: + type: string + type: array + query_string: + description: The search query string. + example: "@service:web-store" + type: string + storage: + $ref: "#/components/schemas/ScatterplotDataProjectionQueryStorage" + required: + - query_string + - data_source + type: object + ScatterplotDataProjectionQueryStorage: + description: Storage tier to query. + enum: + - live + - hot + - habanero + - online_archives + - driveline + - flex_tier + - case_insensitive + - cloud_prem + example: hot + type: string + x-enum-varnames: + - LIVE + - HOT + - HABANERO + - ONLINE_ARCHIVES + - DRIVELINE + - FLEX_TIER + - CASE_INSENSITIVE + - CLOUD_PREM ScatterplotDimension: description: Dimension of the Scatterplot. enum: @@ -13340,21 +13422,47 @@ components: - RADIUS - COLOR ScatterplotTableRequest: - description: Scatterplot request containing formulas and functions. + description: |- + Scatterplot table request. Supports two modes: + - **Formulas and functions** (default): `request_type` is absent or `"table"`. Uses `queries` and `formulas`. + - **Data projection**: `request_type` is `"data_projection"`. Uses `query`, `projection`, and optionally `limit`. properties: formulas: description: List of Scatterplot formulas that operate on queries. items: $ref: "#/components/schemas/ScatterplotWidgetFormula" type: array + limit: + description: Maximum number of rows to return. Used when `request_type` is `"data_projection"`. + format: int64 + type: integer + projection: + $ref: "#/components/schemas/ScatterplotDataProjectionProjection" + description: Projection configuration for data projection mode. Used when `request_type` is `"data_projection"`. queries: description: List of queries that can be returned directly or used in formulas. items: $ref: "#/components/schemas/FormulaAndFunctionQueryDefinition" type: array + query: + $ref: "#/components/schemas/ScatterplotDataProjectionQuery" + description: Query for data projection mode. Used when `request_type` is `"data_projection"`. + request_type: + $ref: "#/components/schemas/ScatterplotTableRequestType" + description: The type of the scatterplot table request. Use `"data_projection"` for unaggregated raw data. response_format: $ref: "#/components/schemas/FormulaAndFunctionResponseFormat" type: object + ScatterplotTableRequestType: + description: The type of the scatterplot table request. + enum: + - table + - data_projection + example: data_projection + type: string + x-enum-varnames: + - TABLE + - DATA_PROJECTION ScatterplotWidgetAggregator: description: Aggregator used for the request. enum: diff --git a/examples/v1/dashboards/CreateDashboard_2342457693.java b/examples/v1/dashboards/CreateDashboard_2342457693.java index de70474e37f..44be46ff32c 100644 --- a/examples/v1/dashboards/CreateDashboard_2342457693.java +++ b/examples/v1/dashboards/CreateDashboard_2342457693.java @@ -5,6 +5,7 @@ import com.datadog.api.client.v1.api.DashboardsApi; import com.datadog.api.client.v1.model.Dashboard; import com.datadog.api.client.v1.model.DashboardLayoutType; +import com.datadog.api.client.v1.model.FormulaAndFunctionEventsDataSource; import com.datadog.api.client.v1.model.FormulaAndFunctionMetricAggregation; import com.datadog.api.client.v1.model.FormulaAndFunctionMetricDataSource; import com.datadog.api.client.v1.model.FormulaAndFunctionMetricQueryDefinition; @@ -13,8 +14,13 @@ import com.datadog.api.client.v1.model.ScatterPlotWidgetDefinition; import com.datadog.api.client.v1.model.ScatterPlotWidgetDefinitionRequests; import com.datadog.api.client.v1.model.ScatterPlotWidgetDefinitionType; +import com.datadog.api.client.v1.model.ScatterplotDataProjectionDimension; +import com.datadog.api.client.v1.model.ScatterplotDataProjectionProjection; +import com.datadog.api.client.v1.model.ScatterplotDataProjectionProjectionType; +import com.datadog.api.client.v1.model.ScatterplotDataProjectionQuery; import com.datadog.api.client.v1.model.ScatterplotDimension; import com.datadog.api.client.v1.model.ScatterplotTableRequest; +import com.datadog.api.client.v1.model.ScatterplotTableRequestType; import com.datadog.api.client.v1.model.ScatterplotWidgetFormula; import com.datadog.api.client.v1.model.Widget; import com.datadog.api.client.v1.model.WidgetAxis; @@ -24,7 +30,6 @@ import com.datadog.api.client.v1.model.WidgetTextAlign; import com.datadog.api.client.v1.model.WidgetTime; import java.util.Arrays; -import java.util.Collections; public class Example { public static void main(String[] args) { @@ -36,7 +41,7 @@ public static void main(String[] args) { .title("Example-Dashboard") .description("") .widgets( - Collections.singletonList( + Arrays.asList( new Widget() .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L)) .definition( @@ -95,6 +100,56 @@ public static void main(String[] args) { .includeZero(true) .min("auto") .max("auto")) + .yaxis( + new WidgetAxis() + .scale("linear") + .includeZero(true) + .min("auto") + .max("auto")))), + new Widget() + .layout(new WidgetLayout().x(48L).y(0L).width(47L).height(15L)) + .definition( + new WidgetDefinition( + new ScatterPlotWidgetDefinition() + .title("Data Projection Scatterplot") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .type(ScatterPlotWidgetDefinitionType.SCATTERPLOT) + .requests( + new ScatterPlotWidgetDefinitionRequests() + .table( + new ScatterplotTableRequest() + .requestType( + ScatterplotTableRequestType.DATA_PROJECTION) + .query( + new ScatterplotDataProjectionQuery() + .queryString("@service:web-store") + .dataSource( + FormulaAndFunctionEventsDataSource + .SPANS)) + .projection( + new ScatterplotDataProjectionProjection() + .type( + ScatterplotDataProjectionProjectionType + .SCATTERPLOT) + .dimensions( + Arrays.asList( + new ScatterplotDataProjectionDimension() + .column("duration") + .dimension( + ScatterplotDimension.X), + new ScatterplotDataProjectionDimension() + .column("@resource_name") + .dimension( + ScatterplotDimension + .Y)))) + .limit(200L))) + .xaxis( + new WidgetAxis() + .scale("linear") + .includeZero(true) + .min("auto") + .max("auto")) .yaxis( new WidgetAxis() .scale("linear") diff --git a/src/main/java/com/datadog/api/client/v1/model/ScatterPlotWidgetDefinitionRequests.java b/src/main/java/com/datadog/api/client/v1/model/ScatterPlotWidgetDefinitionRequests.java index 458bbcff1da..c6c4ae6bd56 100644 --- a/src/main/java/com/datadog/api/client/v1/model/ScatterPlotWidgetDefinitionRequests.java +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterPlotWidgetDefinitionRequests.java @@ -42,7 +42,11 @@ public ScatterPlotWidgetDefinitionRequests table(ScatterplotTableRequest table) } /** - * Scatterplot request containing formulas and functions. + * Scatterplot table request. Supports two modes: - Formulas and functions + * (default): request_type is absent or "table". Uses queries + * and formulas. - Data projection: request_type + * is "data_projection". Uses query, projection, + * and optionally limit. * * @return table */ diff --git a/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionDimension.java b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionDimension.java new file mode 100644 index 00000000000..9556b5d3b68 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionDimension.java @@ -0,0 +1,236 @@ +/* + * 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; + +/** A single dimension mapping for a scatterplot data projection. */ +@JsonPropertyOrder({ + ScatterplotDataProjectionDimension.JSON_PROPERTY_ALIAS, + ScatterplotDataProjectionDimension.JSON_PROPERTY_COLUMN, + ScatterplotDataProjectionDimension.JSON_PROPERTY_DIMENSION, + ScatterplotDataProjectionDimension.JSON_PROPERTY_NUMBER_FORMAT +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ScatterplotDataProjectionDimension { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ALIAS = "alias"; + private String alias; + + public static final String JSON_PROPERTY_COLUMN = "column"; + private String column; + + public static final String JSON_PROPERTY_DIMENSION = "dimension"; + private ScatterplotDimension dimension; + + public static final String JSON_PROPERTY_NUMBER_FORMAT = "number_format"; + private WidgetNumberFormat numberFormat; + + public ScatterplotDataProjectionDimension() {} + + @JsonCreator + public ScatterplotDataProjectionDimension( + @JsonProperty(required = true, value = JSON_PROPERTY_COLUMN) String column, + @JsonProperty(required = true, value = JSON_PROPERTY_DIMENSION) + ScatterplotDimension dimension) { + this.column = column; + this.dimension = dimension; + this.unparsed |= !dimension.isValid(); + } + + public ScatterplotDataProjectionDimension alias(String alias) { + this.alias = alias; + return this; + } + + /** + * Display alias for the dimension. + * + * @return alias + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ALIAS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public ScatterplotDataProjectionDimension column(String column) { + this.column = column; + return this; + } + + /** + * The column name from the data source. + * + * @return column + */ + @JsonProperty(JSON_PROPERTY_COLUMN) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getColumn() { + return column; + } + + public void setColumn(String column) { + this.column = column; + } + + public ScatterplotDataProjectionDimension dimension(ScatterplotDimension dimension) { + this.dimension = dimension; + this.unparsed |= !dimension.isValid(); + return this; + } + + /** + * Dimension of the Scatterplot. + * + * @return dimension + */ + @JsonProperty(JSON_PROPERTY_DIMENSION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ScatterplotDimension getDimension() { + return dimension; + } + + public void setDimension(ScatterplotDimension dimension) { + if (!dimension.isValid()) { + this.unparsed = true; + } + this.dimension = dimension; + } + + public ScatterplotDataProjectionDimension numberFormat(WidgetNumberFormat numberFormat) { + this.numberFormat = numberFormat; + this.unparsed |= numberFormat.unparsed; + return this; + } + + /** + * Number format options for the widget. + * + * @return numberFormat + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NUMBER_FORMAT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetNumberFormat getNumberFormat() { + return numberFormat; + } + + public void setNumberFormat(WidgetNumberFormat numberFormat) { + this.numberFormat = numberFormat; + } + + /** + * 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 ScatterplotDataProjectionDimension + */ + @JsonAnySetter + public ScatterplotDataProjectionDimension 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 ScatterplotDataProjectionDimension object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ScatterplotDataProjectionDimension scatterplotDataProjectionDimension = + (ScatterplotDataProjectionDimension) o; + return Objects.equals(this.alias, scatterplotDataProjectionDimension.alias) + && Objects.equals(this.column, scatterplotDataProjectionDimension.column) + && Objects.equals(this.dimension, scatterplotDataProjectionDimension.dimension) + && Objects.equals(this.numberFormat, scatterplotDataProjectionDimension.numberFormat) + && Objects.equals( + this.additionalProperties, scatterplotDataProjectionDimension.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(alias, column, dimension, numberFormat, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ScatterplotDataProjectionDimension {\n"); + sb.append(" alias: ").append(toIndentedString(alias)).append("\n"); + sb.append(" column: ").append(toIndentedString(column)).append("\n"); + sb.append(" dimension: ").append(toIndentedString(dimension)).append("\n"); + sb.append(" numberFormat: ").append(toIndentedString(numberFormat)).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/ScatterplotDataProjectionProjection.java b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionProjection.java new file mode 100644 index 00000000000..655bd8a227b --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionProjection.java @@ -0,0 +1,195 @@ +/* + * 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 projection configuration for a scatterplot data projection request. */ +@JsonPropertyOrder({ + ScatterplotDataProjectionProjection.JSON_PROPERTY_DIMENSIONS, + ScatterplotDataProjectionProjection.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ScatterplotDataProjectionProjection { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DIMENSIONS = "dimensions"; + private List dimensions = new ArrayList<>(); + + public static final String JSON_PROPERTY_TYPE = "type"; + private ScatterplotDataProjectionProjectionType type; + + public ScatterplotDataProjectionProjection() {} + + @JsonCreator + public ScatterplotDataProjectionProjection( + @JsonProperty(required = true, value = JSON_PROPERTY_DIMENSIONS) + List dimensions, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ScatterplotDataProjectionProjectionType type) { + this.dimensions = dimensions; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ScatterplotDataProjectionProjection dimensions( + List dimensions) { + this.dimensions = dimensions; + for (ScatterplotDataProjectionDimension item : dimensions) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ScatterplotDataProjectionProjection addDimensionsItem( + ScatterplotDataProjectionDimension dimensionsItem) { + this.dimensions.add(dimensionsItem); + this.unparsed |= dimensionsItem.unparsed; + return this; + } + + /** + * Dimension mappings for the scatterplot axes. + * + * @return dimensions + */ + @JsonProperty(JSON_PROPERTY_DIMENSIONS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getDimensions() { + return dimensions; + } + + public void setDimensions(List dimensions) { + this.dimensions = dimensions; + } + + public ScatterplotDataProjectionProjection type(ScatterplotDataProjectionProjectionType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the scatterplot data projection. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ScatterplotDataProjectionProjectionType getType() { + return type; + } + + public void setType(ScatterplotDataProjectionProjectionType 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 ScatterplotDataProjectionProjection + */ + @JsonAnySetter + public ScatterplotDataProjectionProjection 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 ScatterplotDataProjectionProjection object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ScatterplotDataProjectionProjection scatterplotDataProjectionProjection = + (ScatterplotDataProjectionProjection) o; + return Objects.equals(this.dimensions, scatterplotDataProjectionProjection.dimensions) + && Objects.equals(this.type, scatterplotDataProjectionProjection.type) + && Objects.equals( + this.additionalProperties, scatterplotDataProjectionProjection.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(dimensions, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ScatterplotDataProjectionProjection {\n"); + sb.append(" dimensions: ").append(toIndentedString(dimensions)).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/ScatterplotDataProjectionProjectionType.java b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionProjectionType.java new file mode 100644 index 00000000000..6e6ae9a9863 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionProjectionType.java @@ -0,0 +1,63 @@ +/* + * 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; + +/** The type of the scatterplot data projection. */ +@JsonSerialize( + using = + ScatterplotDataProjectionProjectionType.ScatterplotDataProjectionProjectionTypeSerializer + .class) +public class ScatterplotDataProjectionProjectionType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("scatterplot")); + + public static final ScatterplotDataProjectionProjectionType SCATTERPLOT = + new ScatterplotDataProjectionProjectionType("scatterplot"); + + ScatterplotDataProjectionProjectionType(String value) { + super(value, allowedValues); + } + + public static class ScatterplotDataProjectionProjectionTypeSerializer + extends StdSerializer { + public ScatterplotDataProjectionProjectionTypeSerializer( + Class t) { + super(t); + } + + public ScatterplotDataProjectionProjectionTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ScatterplotDataProjectionProjectionType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ScatterplotDataProjectionProjectionType fromValue(String value) { + return new ScatterplotDataProjectionProjectionType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionQuery.java b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionQuery.java new file mode 100644 index 00000000000..df5de5f89cf --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionQuery.java @@ -0,0 +1,249 @@ +/* + * 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 query for a scatterplot data projection request. */ +@JsonPropertyOrder({ + ScatterplotDataProjectionQuery.JSON_PROPERTY_DATA_SOURCE, + ScatterplotDataProjectionQuery.JSON_PROPERTY_INDEXES, + ScatterplotDataProjectionQuery.JSON_PROPERTY_QUERY_STRING, + ScatterplotDataProjectionQuery.JSON_PROPERTY_STORAGE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ScatterplotDataProjectionQuery { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA_SOURCE = "data_source"; + private FormulaAndFunctionEventsDataSource dataSource; + + public static final String JSON_PROPERTY_INDEXES = "indexes"; + private List indexes = null; + + public static final String JSON_PROPERTY_QUERY_STRING = "query_string"; + private String queryString; + + public static final String JSON_PROPERTY_STORAGE = "storage"; + private ScatterplotDataProjectionQueryStorage storage; + + public ScatterplotDataProjectionQuery() {} + + @JsonCreator + public ScatterplotDataProjectionQuery( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA_SOURCE) + FormulaAndFunctionEventsDataSource dataSource, + @JsonProperty(required = true, value = JSON_PROPERTY_QUERY_STRING) String queryString) { + this.dataSource = dataSource; + this.unparsed |= !dataSource.isValid(); + this.queryString = queryString; + } + + public ScatterplotDataProjectionQuery dataSource(FormulaAndFunctionEventsDataSource dataSource) { + this.dataSource = dataSource; + this.unparsed |= !dataSource.isValid(); + return this; + } + + /** + * Data source for event platform-based queries. + * + * @return dataSource + */ + @JsonProperty(JSON_PROPERTY_DATA_SOURCE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public FormulaAndFunctionEventsDataSource getDataSource() { + return dataSource; + } + + public void setDataSource(FormulaAndFunctionEventsDataSource dataSource) { + if (!dataSource.isValid()) { + this.unparsed = true; + } + this.dataSource = dataSource; + } + + public ScatterplotDataProjectionQuery indexes(List indexes) { + this.indexes = indexes; + return this; + } + + public ScatterplotDataProjectionQuery addIndexesItem(String indexesItem) { + if (this.indexes == null) { + this.indexes = new ArrayList<>(); + } + this.indexes.add(indexesItem); + return this; + } + + /** + * Indexes to search. + * + * @return indexes + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_INDEXES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getIndexes() { + return indexes; + } + + public void setIndexes(List indexes) { + this.indexes = indexes; + } + + public ScatterplotDataProjectionQuery queryString(String queryString) { + this.queryString = queryString; + return this; + } + + /** + * The search query string. + * + * @return queryString + */ + @JsonProperty(JSON_PROPERTY_QUERY_STRING) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getQueryString() { + return queryString; + } + + public void setQueryString(String queryString) { + this.queryString = queryString; + } + + public ScatterplotDataProjectionQuery storage(ScatterplotDataProjectionQueryStorage storage) { + this.storage = storage; + this.unparsed |= !storage.isValid(); + return this; + } + + /** + * Storage tier to query. + * + * @return storage + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STORAGE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ScatterplotDataProjectionQueryStorage getStorage() { + return storage; + } + + public void setStorage(ScatterplotDataProjectionQueryStorage storage) { + if (!storage.isValid()) { + this.unparsed = true; + } + this.storage = storage; + } + + /** + * 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 ScatterplotDataProjectionQuery + */ + @JsonAnySetter + public ScatterplotDataProjectionQuery 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 ScatterplotDataProjectionQuery object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ScatterplotDataProjectionQuery scatterplotDataProjectionQuery = + (ScatterplotDataProjectionQuery) o; + return Objects.equals(this.dataSource, scatterplotDataProjectionQuery.dataSource) + && Objects.equals(this.indexes, scatterplotDataProjectionQuery.indexes) + && Objects.equals(this.queryString, scatterplotDataProjectionQuery.queryString) + && Objects.equals(this.storage, scatterplotDataProjectionQuery.storage) + && Objects.equals( + this.additionalProperties, scatterplotDataProjectionQuery.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(dataSource, indexes, queryString, storage, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ScatterplotDataProjectionQuery {\n"); + sb.append(" dataSource: ").append(toIndentedString(dataSource)).append("\n"); + sb.append(" indexes: ").append(toIndentedString(indexes)).append("\n"); + sb.append(" queryString: ").append(toIndentedString(queryString)).append("\n"); + sb.append(" storage: ").append(toIndentedString(storage)).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/ScatterplotDataProjectionQueryStorage.java b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionQueryStorage.java new file mode 100644 index 00000000000..3b477a43653 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterplotDataProjectionQueryStorage.java @@ -0,0 +1,85 @@ +/* + * 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; + +/** Storage tier to query. */ +@JsonSerialize( + using = + ScatterplotDataProjectionQueryStorage.ScatterplotDataProjectionQueryStorageSerializer.class) +public class ScatterplotDataProjectionQueryStorage extends ModelEnum { + + private static final Set allowedValues = + new HashSet( + Arrays.asList( + "live", + "hot", + "habanero", + "online_archives", + "driveline", + "flex_tier", + "case_insensitive", + "cloud_prem")); + + public static final ScatterplotDataProjectionQueryStorage LIVE = + new ScatterplotDataProjectionQueryStorage("live"); + public static final ScatterplotDataProjectionQueryStorage HOT = + new ScatterplotDataProjectionQueryStorage("hot"); + public static final ScatterplotDataProjectionQueryStorage HABANERO = + new ScatterplotDataProjectionQueryStorage("habanero"); + public static final ScatterplotDataProjectionQueryStorage ONLINE_ARCHIVES = + new ScatterplotDataProjectionQueryStorage("online_archives"); + public static final ScatterplotDataProjectionQueryStorage DRIVELINE = + new ScatterplotDataProjectionQueryStorage("driveline"); + public static final ScatterplotDataProjectionQueryStorage FLEX_TIER = + new ScatterplotDataProjectionQueryStorage("flex_tier"); + public static final ScatterplotDataProjectionQueryStorage CASE_INSENSITIVE = + new ScatterplotDataProjectionQueryStorage("case_insensitive"); + public static final ScatterplotDataProjectionQueryStorage CLOUD_PREM = + new ScatterplotDataProjectionQueryStorage("cloud_prem"); + + ScatterplotDataProjectionQueryStorage(String value) { + super(value, allowedValues); + } + + public static class ScatterplotDataProjectionQueryStorageSerializer + extends StdSerializer { + public ScatterplotDataProjectionQueryStorageSerializer( + Class t) { + super(t); + } + + public ScatterplotDataProjectionQueryStorageSerializer() { + this(null); + } + + @Override + public void serialize( + ScatterplotDataProjectionQueryStorage value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ScatterplotDataProjectionQueryStorage fromValue(String value) { + return new ScatterplotDataProjectionQueryStorage(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequest.java b/src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequest.java index 3a9909a7add..c2d07a114cd 100644 --- a/src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequest.java +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequest.java @@ -18,10 +18,20 @@ import java.util.Map; import java.util.Objects; -/** Scatterplot request containing formulas and functions. */ +/** + * Scatterplot table request. Supports two modes: - Formulas and functions + * (default): request_type is absent or "table". Uses queries + * and formulas. - Data projection: request_type is + * "data_projection". Uses query, projection, and optionally + * limit. + */ @JsonPropertyOrder({ ScatterplotTableRequest.JSON_PROPERTY_FORMULAS, + ScatterplotTableRequest.JSON_PROPERTY_LIMIT, + ScatterplotTableRequest.JSON_PROPERTY_PROJECTION, ScatterplotTableRequest.JSON_PROPERTY_QUERIES, + ScatterplotTableRequest.JSON_PROPERTY_QUERY, + ScatterplotTableRequest.JSON_PROPERTY_REQUEST_TYPE, ScatterplotTableRequest.JSON_PROPERTY_RESPONSE_FORMAT }) @jakarta.annotation.Generated( @@ -31,9 +41,21 @@ public class ScatterplotTableRequest { public static final String JSON_PROPERTY_FORMULAS = "formulas"; private List formulas = null; + public static final String JSON_PROPERTY_LIMIT = "limit"; + private Long limit; + + public static final String JSON_PROPERTY_PROJECTION = "projection"; + private ScatterplotDataProjectionProjection projection; + public static final String JSON_PROPERTY_QUERIES = "queries"; private List queries = null; + public static final String JSON_PROPERTY_QUERY = "query"; + private ScatterplotDataProjectionQuery query; + + public static final String JSON_PROPERTY_REQUEST_TYPE = "request_type"; + private ScatterplotTableRequestType requestType; + public static final String JSON_PROPERTY_RESPONSE_FORMAT = "response_format"; private FormulaAndFunctionResponseFormat responseFormat; @@ -70,6 +92,50 @@ public void setFormulas(List formulas) { this.formulas = formulas; } + public ScatterplotTableRequest limit(Long limit) { + this.limit = limit; + return this; + } + + /** + * Maximum number of rows to return. Used when request_type is + * "data_projection". + * + * @return limit + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LIMIT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getLimit() { + return limit; + } + + public void setLimit(Long limit) { + this.limit = limit; + } + + public ScatterplotTableRequest projection(ScatterplotDataProjectionProjection projection) { + this.projection = projection; + this.unparsed |= projection.unparsed; + return this; + } + + /** + * The projection configuration for a scatterplot data projection request. + * + * @return projection + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROJECTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ScatterplotDataProjectionProjection getProjection() { + return projection; + } + + public void setProjection(ScatterplotDataProjectionProjection projection) { + this.projection = projection; + } + public ScatterplotTableRequest queries(List queries) { this.queries = queries; for (FormulaAndFunctionQueryDefinition item : queries) { @@ -103,6 +169,53 @@ public void setQueries(List queries) { this.queries = queries; } + public ScatterplotTableRequest query(ScatterplotDataProjectionQuery query) { + this.query = query; + this.unparsed |= query.unparsed; + return this; + } + + /** + * The query for a scatterplot data projection request. + * + * @return query + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ScatterplotDataProjectionQuery getQuery() { + return query; + } + + public void setQuery(ScatterplotDataProjectionQuery query) { + this.query = query; + } + + public ScatterplotTableRequest requestType(ScatterplotTableRequestType requestType) { + this.requestType = requestType; + this.unparsed |= !requestType.isValid(); + return this; + } + + /** + * The type of the scatterplot table request. + * + * @return requestType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REQUEST_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ScatterplotTableRequestType getRequestType() { + return requestType; + } + + public void setRequestType(ScatterplotTableRequestType requestType) { + if (!requestType.isValid()) { + this.unparsed = true; + } + this.requestType = requestType; + } + public ScatterplotTableRequest responseFormat(FormulaAndFunctionResponseFormat responseFormat) { this.responseFormat = responseFormat; this.unparsed |= !responseFormat.isValid(); @@ -186,14 +299,26 @@ public boolean equals(Object o) { } ScatterplotTableRequest scatterplotTableRequest = (ScatterplotTableRequest) o; return Objects.equals(this.formulas, scatterplotTableRequest.formulas) + && Objects.equals(this.limit, scatterplotTableRequest.limit) + && Objects.equals(this.projection, scatterplotTableRequest.projection) && Objects.equals(this.queries, scatterplotTableRequest.queries) + && Objects.equals(this.query, scatterplotTableRequest.query) + && Objects.equals(this.requestType, scatterplotTableRequest.requestType) && Objects.equals(this.responseFormat, scatterplotTableRequest.responseFormat) && Objects.equals(this.additionalProperties, scatterplotTableRequest.additionalProperties); } @Override public int hashCode() { - return Objects.hash(formulas, queries, responseFormat, additionalProperties); + return Objects.hash( + formulas, + limit, + projection, + queries, + query, + requestType, + responseFormat, + additionalProperties); } @Override @@ -201,7 +326,11 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class ScatterplotTableRequest {\n"); sb.append(" formulas: ").append(toIndentedString(formulas)).append("\n"); + sb.append(" limit: ").append(toIndentedString(limit)).append("\n"); + sb.append(" projection: ").append(toIndentedString(projection)).append("\n"); sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); + sb.append(" query: ").append(toIndentedString(query)).append("\n"); + sb.append(" requestType: ").append(toIndentedString(requestType)).append("\n"); sb.append(" responseFormat: ").append(toIndentedString(responseFormat)).append("\n"); sb.append(" additionalProperties: ") .append(toIndentedString(additionalProperties)) diff --git a/src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequestType.java b/src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequestType.java new file mode 100644 index 00000000000..392ab38abf0 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/ScatterplotTableRequestType.java @@ -0,0 +1,58 @@ +/* + * 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; + +/** The type of the scatterplot table request. */ +@JsonSerialize(using = ScatterplotTableRequestType.ScatterplotTableRequestTypeSerializer.class) +public class ScatterplotTableRequestType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("table", "data_projection")); + + public static final ScatterplotTableRequestType TABLE = new ScatterplotTableRequestType("table"); + public static final ScatterplotTableRequestType DATA_PROJECTION = + new ScatterplotTableRequestType("data_projection"); + + ScatterplotTableRequestType(String value) { + super(value, allowedValues); + } + + public static class ScatterplotTableRequestTypeSerializer + extends StdSerializer { + public ScatterplotTableRequestTypeSerializer(Class t) { + super(t); + } + + public ScatterplotTableRequestTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ScatterplotTableRequestType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ScatterplotTableRequestType fromValue(String value) { + return new ScatterplotTableRequestType(value); + } +} diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.freeze index 2f263e05b5c..f9812653410 100644 --- a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.freeze +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.freeze @@ -1 +1 @@ -2024-11-15T19:32:52.260Z \ No newline at end of file +2026-04-14T13:48:27.274Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.json index d3026872c29..0e94cd1c5e7 100644 --- a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.json +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_scatterplot_widget.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"description\":\"\",\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_scatterplot_widget-1731699172\",\"widgets\":[{\"definition\":{\"color_by_groups\":[],\"requests\":{\"table\":{\"formulas\":[{\"alias\":\"\",\"dimension\":\"x\",\"formula\":\"query1\"},{\"alias\":\"\",\"dimension\":\"y\",\"formula\":\"query2\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"},{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query2\",\"query\":\"avg:system.mem.used{*} by {service}\"}],\"response_format\":\"scalar\"}},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"scatterplot\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}}]}" + "json": "{\"description\":\"\",\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_scatterplot_widget-1776174507\",\"widgets\":[{\"definition\":{\"color_by_groups\":[],\"requests\":{\"table\":{\"formulas\":[{\"alias\":\"\",\"dimension\":\"x\",\"formula\":\"query1\"},{\"alias\":\"\",\"dimension\":\"y\",\"formula\":\"query2\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"},{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query2\",\"query\":\"avg:system.mem.used{*} by {service}\"}],\"response_format\":\"scalar\"}},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"scatterplot\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}},{\"definition\":{\"requests\":{\"table\":{\"limit\":200,\"projection\":{\"dimensions\":[{\"column\":\"duration\",\"dimension\":\"x\"},{\"column\":\"@resource_name\",\"dimension\":\"y\"}],\"type\":\"scatterplot\"},\"query\":{\"data_source\":\"spans\",\"query_string\":\"@service:web-store\"},\"request_type\":\"data_projection\"}},\"title\":\"Data Projection Scatterplot\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"scatterplot\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":15,\"width\":47,\"x\":48,\"y\":0}}]}" }, "headers": {}, "method": "POST", @@ -12,7 +12,7 @@ "secure": true }, "httpResponse": { - "body": "{\"id\":\"s39-kcu-kcv\",\"title\":\"Test-Create_a_new_dashboard_with_scatterplot_widget-1731699172\",\"description\":\"\",\"author_handle\":\"frog@datadoghq.com\",\"author_name\":null,\"layout_type\":\"free\",\"url\":\"/dashboard/s39-kcu-kcv/test-createanewdashboardwithscatterplotwidget-1731699172\",\"is_read_only\":false,\"template_variables\":[],\"widgets\":[{\"definition\":{\"color_by_groups\":[],\"requests\":{\"table\":{\"formulas\":[{\"alias\":\"\",\"dimension\":\"x\",\"formula\":\"query1\"},{\"alias\":\"\",\"dimension\":\"y\",\"formula\":\"query2\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"},{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query2\",\"query\":\"avg:system.mem.used{*} by {service}\"}],\"response_format\":\"scalar\"}},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"scatterplot\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":6421549335837738}],\"notify_list\":[],\"created_at\":\"2024-11-15T19:32:52.488297+00:00\",\"modified_at\":\"2024-11-15T19:32:52.488297+00:00\",\"restricted_roles\":[]}\n", + "body": "{\"id\":\"zdc-f9y-htv\",\"title\":\"Test-Create_a_new_dashboard_with_scatterplot_widget-1776174507\",\"description\":\"\",\"author_handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"author_name\":\"CI Account\",\"layout_type\":\"free\",\"url\":\"/dashboard/zdc-f9y-htv/test-createanewdashboardwithscatterplotwidget-1776174507\",\"template_variables\":[],\"widgets\":[{\"definition\":{\"color_by_groups\":[],\"requests\":{\"table\":{\"formulas\":[{\"alias\":\"\",\"dimension\":\"x\",\"formula\":\"query1\"},{\"alias\":\"\",\"dimension\":\"y\",\"formula\":\"query2\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"},{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query2\",\"query\":\"avg:system.mem.used{*} by {service}\"}],\"response_format\":\"scalar\"}},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"scatterplot\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":6156355834526034},{\"definition\":{\"requests\":{\"table\":{\"limit\":200,\"projection\":{\"dimensions\":[{\"column\":\"duration\",\"dimension\":\"x\"},{\"column\":\"@resource_name\",\"dimension\":\"y\"}],\"type\":\"scatterplot\"},\"query\":{\"data_source\":\"spans\",\"query_string\":\"@service:web-store\"},\"request_type\":\"data_projection\"}},\"title\":\"Data Projection Scatterplot\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"scatterplot\",\"xaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"},\"yaxis\":{\"include_zero\":true,\"max\":\"auto\",\"min\":\"auto\",\"scale\":\"linear\"}},\"layout\":{\"height\":15,\"width\":47,\"x\":48,\"y\":0},\"id\":1138848396119898}],\"notify_list\":[],\"created_at\":\"2026-04-14T13:48:27.576450+00:00\",\"modified_at\":\"2026-04-14T13:48:27.576450+00:00\",\"restricted_roles\":[]}", "headers": { "Content-Type": [ "application/json" @@ -27,18 +27,18 @@ "timeToLive": { "unlimited": true }, - "id": "4f2c4093-d27f-94a8-1f6d-1d6ef8a6ee72" + "id": "6fda3d1a-0412-37fd-ea3b-8020783755d7" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v1/dashboard/s39-kcu-kcv", + "path": "/api/v1/dashboard/zdc-f9y-htv", "keepAlive": false, "secure": true }, "httpResponse": { - "body": "{\"deleted_dashboard_id\":\"s39-kcu-kcv\"}\n", + "body": "{\"deleted_dashboard_id\":\"zdc-f9y-htv\"}", "headers": { "Content-Type": [ "application/json" @@ -53,6 +53,6 @@ "timeToLive": { "unlimited": true }, - "id": "843689b7-89cd-a05d-c633-af6a7ee8dc6d" + "id": "44e3143b-3781-e007-1bdc-eb41e07fca5e" } ] \ 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 2541faab2d1..2707ceb720d 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 @@ -859,6 +859,13 @@ Feature: Dashboards When the request is sent Then the response status is 200 OK And the response "widgets[0].definition.type" is equal to "scatterplot" + And the response "widgets[1].definition.type" is equal to "scatterplot" + And the response "widgets[1].definition.requests.table.request_type" is equal to "data_projection" + And the response "widgets[1].definition.requests.table.query.data_source" is equal to "spans" + And the response "widgets[1].definition.requests.table.query.query_string" is equal to "@service:web-store" + And the response "widgets[1].definition.requests.table.projection.type" is equal to "scatterplot" + And the response "widgets[1].definition.requests.table.projection.dimensions" has length 2 + And the response "widgets[1].definition.requests.table.limit" is equal to 200 @team:DataDog/dashboards-backend Scenario: Create a new dashboard with servicemap widget diff --git a/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/scatterplot_widget.json b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/scatterplot_widget.json index 65bcc2ff3cd..ea119633330 100644 --- a/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/scatterplot_widget.json +++ b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/scatterplot_widget.json @@ -64,6 +64,55 @@ ] } + }, + { + "layout":{ + "x":48, + "y":0, + "width":47, + "height":15 + }, + "definition":{ + "title":"Data Projection Scatterplot", + "title_size":"16", + "title_align":"left", + "type":"scatterplot", + "requests":{ + "table":{ + "request_type":"data_projection", + "query":{ + "query_string":"@service:web-store", + "data_source":"spans" + }, + "projection":{ + "type":"scatterplot", + "dimensions":[ + { + "column":"duration", + "dimension":"x" + }, + { + "column":"@resource_name", + "dimension":"y" + } + ] + }, + "limit":200 + } + }, + "xaxis":{ + "scale":"linear", + "include_zero":true, + "min":"auto", + "max":"auto" + }, + "yaxis":{ + "scale":"linear", + "include_zero":true, + "min":"auto", + "max":"auto" + } + } } ], "template_variables":[