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":[