diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml
index 051a69bc024..fa4685af5cf 100644
--- a/.generator/schemas/v1/openapi.yaml
+++ b/.generator/schemas/v1/openapi.yaml
@@ -1904,6 +1904,67 @@ components:
type: string
x-enum-varnames:
- DATA_PROJECTION
+ DatasetListQuery:
+ description: Query that lists the rows of a published dataset (a DDSQL query) without aggregation.
+ properties:
+ data_source:
+ $ref: "#/components/schemas/DatasetListQueryDataSourceType"
+ dataset_id:
+ description: ID of the published dataset to query.
+ example: "abc-123-def"
+ type: string
+ dataset_provider:
+ $ref: "#/components/schemas/PublishedDatasetProvider"
+ filter:
+ description: Filter applied to the dataset's rows, using events-style search syntax.
+ example: "service:web-store"
+ type: string
+ limit:
+ description: Maximum number of rows to return from the dataset query.
+ format: int64
+ type: integer
+ sort:
+ $ref: "#/components/schemas/DatasetListQuerySort"
+ required:
+ - data_source
+ - dataset_provider
+ - dataset_id
+ type: object
+ DatasetListQueryDataSourceType:
+ description: Identifies this as a published-dataset list query.
+ enum:
+ - dataset
+ example: dataset
+ type: string
+ x-enum-varnames:
+ - DATASET
+ DatasetListQuerySort:
+ description: Sort configuration for a `DatasetListQuery`.
+ properties:
+ fields:
+ description: List of fields to sort the rows by, applied in order.
+ example:
+ - name: cpu_usage
+ order: desc
+ items:
+ $ref: "#/components/schemas/DatasetListQuerySortField"
+ type: array
+ required:
+ - fields
+ type: object
+ DatasetListQuerySortField:
+ description: A single sort directive for a `DatasetListQuery`.
+ properties:
+ name:
+ description: Name of the field to sort on.
+ example: duration
+ type: string
+ order:
+ $ref: "#/components/schemas/QuerySortOrder"
+ required:
+ - name
+ - order
+ type: object
DeleteSharedDashboardResponse:
description: Response containing token of deleted shared dashboard.
properties:
@@ -4492,7 +4553,9 @@ components:
type: integer
type: object
HostMapRequest:
- description: Updated host map.
+ deprecated: true
+ description: >-
+ Deprecated - Legacy metric-based host map request. Use the infrastructure-backed (`request_type: infrastructure_hostmap`) or DDSQL (`request_type: data_projection`) format instead.
properties:
apm_query:
$ref: "#/components/schemas/LogQueryDefinition"
@@ -4542,32 +4605,46 @@ components:
description: The description of the widget.
type: string
group:
- description: List of tag prefixes to group by.
+ deprecated: true
+ description: >-
+ Deprecated - Only used by the legacy metric-based format. Use `group_by` (infrastructure) or a `group` dimension (DDSQL) inside `requests` instead.
items:
description: Tag prefixes.
type: string
type: array
no_group_hosts:
- description: Whether to show the hosts that don’t fit in a group.
+ deprecated: true
+ description: >-
+ Deprecated - Only used by the legacy metric-based format. Use `no_group_hosts` inside `requests` instead.
type: boolean
no_metric_hosts:
- description: Whether to show the hosts with no metrics.
+ deprecated: true
+ description: >-
+ Deprecated - Only used by the legacy metric-based format. Use `no_metric_hosts` inside `requests` instead.
type: boolean
node_type:
$ref: "#/components/schemas/WidgetNodeType"
+ deprecated: true
+ description: >-
+ Deprecated - Only used by the legacy metric-based format. Use `node_type` inside `requests` instead.
notes:
description: Notes on the title.
type: string
requests:
$ref: "#/components/schemas/HostMapWidgetDefinitionRequests"
scope:
- description: List of tags used to filter the map.
+ deprecated: true
+ description: >-
+ Deprecated - Only used by the legacy metric-based format. Use `filter` inside `requests` instead.
items:
description: Tags.
type: string
type: array
style:
$ref: "#/components/schemas/HostMapWidgetDefinitionStyle"
+ deprecated: true
+ description: >-
+ Deprecated - Only used by the legacy metric-based format. Use `style` inside `requests` instead.
title:
description: Title of the widget.
type: string
@@ -4582,20 +4659,33 @@ components:
- type
- requests
type: object
+ HostMapWidgetDefinitionRequestType:
+ description: >-
+ Identifies which host map request format the sibling fields on `HostMapWidgetDefinitionRequests` describe: an infrastructure-backed request or a DDSQL published-dataset request.
+ enum:
+ - infrastructure_hostmap
+ - data_projection
+ example: infrastructure_hostmap
+ type: string
+ x-enum-varnames:
+ - INFRASTRUCTURE_HOSTMAP
+ - DATA_PROJECTION
HostMapWidgetDefinitionRequests:
description: >-
- Query definition for the host map widget. Supports two mutually exclusive formats distinguished by the presence of `request_type`: the legacy metric-based format (`fill`/`size`) and the infrastructure-backed format (`request_type`, `node_type`, `enrichments`).
+ Query definition for the host map widget. Supports three mutually exclusive formats distinguished by `request_type`: the deprecated legacy metric-based format (`fill`/`size`, no `request_type`), the infrastructure-backed format (`request_type: infrastructure_hostmap`), and the DDSQL published-dataset format (`request_type: data_projection`).
example: {}
properties:
child:
$ref: "#/components/schemas/HostMapWidgetInfrastructureRequest"
+ description: Optional child entities for hierarchical visualization (for example, host → container). Only used by the infrastructure-backed format.
conditional_formats:
description: List of conditional formatting rules applied to fill values.
items:
$ref: "#/components/schemas/WidgetConditionalFormat"
type: array
enrichments:
- description: Metric or event queries joined to the entity set. Each formula specifies a visual dimension.
+ description: >-
+ Metric or event queries joined to the entity set. Each formula specifies a visual dimension. Only used by the infrastructure-backed format.
example:
- formulas:
- dimension: fill
@@ -4610,17 +4700,25 @@ components:
type: array
fill:
$ref: "#/components/schemas/HostMapRequest"
+ deprecated: true
+ description: >-
+ Deprecated - Legacy metric-based format. Use the infrastructure-backed (`request_type: infrastructure_hostmap`) or DDSQL (`request_type: data_projection`) format instead.
filter:
- description: Filter string for the entity set in tag format (for example, `env:prod`).
+ description: >-
+ Filter string for the entity set in tag format (for example, `env:prod`). Only used by the infrastructure-backed format.
example: "env:prod"
type: string
group_by:
description: |-
Defines how entities are grouped into tiles. The ordering of entries implies
- the grouping hierarchy.
+ the grouping hierarchy. Only used by the infrastructure-backed format.
items:
$ref: "#/components/schemas/HostMapWidgetGroupBy"
type: array
+ limit:
+ description: Maximum number of rows to return from the dataset query. Only used by the DDSQL format.
+ format: int64
+ type: integer
no_group_hosts:
description: Whether to hide entities that have no group assignment.
type: boolean
@@ -4629,15 +4727,28 @@ components:
type: boolean
node_type:
$ref: "#/components/schemas/HostMapWidgetNodeType"
+ description: Entity type to visualize. Only used by the infrastructure-backed format.
+ projection:
+ $ref: "#/components/schemas/HostMapWidgetProjection"
+ description: >-
+ Maps dataset columns to map dimensions (entity, optional parent for grouping, fill, size). Only used by the DDSQL format.
+ query:
+ $ref: "#/components/schemas/DatasetListQuery"
+ description: Published-dataset query. Only used by the DDSQL format.
request_type:
- $ref: "#/components/schemas/HostMapWidgetInfrastructureRequestRequestType"
+ $ref: "#/components/schemas/HostMapWidgetDefinitionRequestType"
size:
$ref: "#/components/schemas/HostMapRequest"
+ deprecated: true
+ description: >-
+ Deprecated - Legacy metric-based format. Use the infrastructure-backed (`request_type: infrastructure_hostmap`) or DDSQL (`request_type: data_projection`) format instead.
style:
$ref: "#/components/schemas/HostMapWidgetInfrastructureStyle"
type: object
HostMapWidgetDefinitionStyle:
- description: The style to apply to the widget.
+ deprecated: true
+ description: >-
+ Deprecated - The style to apply to the legacy metric-based host map widget. Use `HostMapWidgetInfrastructureStyle` instead.
properties:
fill_max:
description: Max value to use to color the map.
@@ -4662,17 +4773,20 @@ components:
x-enum-varnames:
- HOSTMAP
HostMapWidgetDimension:
- description: Visual dimension driven by a formula in the infrastructure host map widget.
+ description: >-
+ Visual dimension for the host map widget. Used both by infrastructure-backed formulas and by DDSQL projection columns; `group` is only meaningful for DDSQL projection columns, where repeated entries define the grouping hierarchy.
enum:
- node
- fill
- size
+ - group
example: node
type: string
x-enum-varnames:
- NODE
- FILL
- SIZE
+ - GROUP
HostMapWidgetFormula:
description: |-
Formula for the infrastructure host map widget that specifies both the expression
@@ -4857,6 +4971,54 @@ components:
- CONTAINER
- POD
- CLUSTER
+ HostMapWidgetProjection:
+ description: >-
+ Projection for the DDSQL host map request. Maps dataset columns to map dimensions: `node` identifies the entity, repeated `group` entries define the grouping hierarchy (outermost first), and `fill`/`size` drive the tile color and size.
+ properties:
+ dimensions:
+ description: List of column-to-dimension mappings for the projection.
+ example:
+ - column: entity_id
+ dimension: node
+ - column: parent_id
+ dimension: group
+ - column: cpu_usage
+ dimension: fill
+ items:
+ $ref: "#/components/schemas/HostMapWidgetProjectionDimensionMapping"
+ type: array
+ type:
+ $ref: "#/components/schemas/HostMapWidgetProjectionType"
+ required:
+ - type
+ - dimensions
+ type: object
+ HostMapWidgetProjectionDimensionMapping:
+ description: Maps a dataset column to a host map visual dimension.
+ properties:
+ alias:
+ description: Alias used to label the column instead of its name.
+ type: string
+ column:
+ description: Source column name from the dataset.
+ example: entity_id
+ type: string
+ dimension:
+ $ref: "#/components/schemas/HostMapWidgetDimension"
+ number_format:
+ $ref: "#/components/schemas/WidgetNumberFormat"
+ required:
+ - column
+ - dimension
+ type: object
+ HostMapWidgetProjectionType:
+ description: Type of the host map projection.
+ enum:
+ - hostmap
+ example: hostmap
+ type: string
+ x-enum-varnames:
+ - HOSTMAP
HostMapWidgetScalarRequest:
description: |-
Scalar formula request for the infrastructure host map widget. Each formula specifies
@@ -12635,12 +12797,22 @@ components:
- type
- requests
type: object
+ PublishedDatasetProvider:
+ description: >-
+ Product page that published the dataset queried by a `DatasetListQuery`. `ddsql_query` is the only provider currently supported for host map widgets.
+ enum:
+ - ddsql_query
+ example: ddsql_query
+ type: string
+ x-enum-varnames:
+ - DDSQL_QUERY
QuerySortOrder:
default: desc
description: Direction of sort.
enum:
- asc
- desc
+ example: asc
type: string
x-enum-varnames:
- ASC
diff --git a/examples/v1/dashboards/CreateDashboard_2780500284.java b/examples/v1/dashboards/CreateDashboard_2780500284.java
new file mode 100644
index 00000000000..5d9c14a6e7f
--- /dev/null
+++ b/examples/v1/dashboards/CreateDashboard_2780500284.java
@@ -0,0 +1,93 @@
+// Create a new dashboard with hostmap DDSQL widget
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v1.api.DashboardsApi;
+import com.datadog.api.client.v1.model.Dashboard;
+import com.datadog.api.client.v1.model.DashboardLayoutType;
+import com.datadog.api.client.v1.model.DatasetListQuery;
+import com.datadog.api.client.v1.model.DatasetListQueryDataSourceType;
+import com.datadog.api.client.v1.model.HostMapWidgetDefinition;
+import com.datadog.api.client.v1.model.HostMapWidgetDefinitionRequestType;
+import com.datadog.api.client.v1.model.HostMapWidgetDefinitionRequests;
+import com.datadog.api.client.v1.model.HostMapWidgetDefinitionType;
+import com.datadog.api.client.v1.model.HostMapWidgetDimension;
+import com.datadog.api.client.v1.model.HostMapWidgetInfrastructureStyle;
+import com.datadog.api.client.v1.model.HostMapWidgetProjection;
+import com.datadog.api.client.v1.model.HostMapWidgetProjectionDimensionMapping;
+import com.datadog.api.client.v1.model.HostMapWidgetProjectionType;
+import com.datadog.api.client.v1.model.PublishedDatasetProvider;
+import com.datadog.api.client.v1.model.Widget;
+import com.datadog.api.client.v1.model.WidgetDefinition;
+import com.datadog.api.client.v1.model.WidgetLayout;
+import com.datadog.api.client.v1.model.WidgetTextAlign;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ DashboardsApi apiInstance = new DashboardsApi(defaultClient);
+
+ Dashboard body =
+ new Dashboard()
+ .title("Example-Dashboard")
+ .description(null)
+ .widgets(
+ Collections.singletonList(
+ new Widget()
+ .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(22L))
+ .definition(
+ new WidgetDefinition(
+ new HostMapWidgetDefinition()
+ .title("")
+ .titleSize("16")
+ .titleAlign(WidgetTextAlign.LEFT)
+ .type(HostMapWidgetDefinitionType.HOSTMAP)
+ .requests(
+ new HostMapWidgetDefinitionRequests()
+ .requestType(
+ HostMapWidgetDefinitionRequestType.DATA_PROJECTION)
+ .limit(1000L)
+ .query(
+ new DatasetListQuery()
+ .dataSource(
+ DatasetListQueryDataSourceType.DATASET)
+ .datasetProvider(
+ PublishedDatasetProvider.DDSQL_QUERY)
+ .datasetId("abc-123-def"))
+ .projection(
+ new HostMapWidgetProjection()
+ .type(HostMapWidgetProjectionType.HOSTMAP)
+ .dimensions(
+ Arrays.asList(
+ new HostMapWidgetProjectionDimensionMapping()
+ .column("entity_id")
+ .dimension(
+ HostMapWidgetDimension.NODE),
+ new HostMapWidgetProjectionDimensionMapping()
+ .column("parent_id")
+ .dimension(
+ HostMapWidgetDimension.GROUP),
+ new HostMapWidgetProjectionDimensionMapping()
+ .column("cpu_usage")
+ .dimension(
+ HostMapWidgetDimension.FILL))))
+ .style(
+ new HostMapWidgetInfrastructureStyle()
+ .palette("green_to_orange")
+ .paletteFlip(false)))))))
+ .layoutType(DashboardLayoutType.FREE);
+
+ try {
+ Dashboard result = apiInstance.createDashboard(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling DashboardsApi#createDashboard");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v1/dashboards/CreateDashboard_2882802132.java b/examples/v1/dashboards/CreateDashboard_2882802132.java
index 962e0a28f37..cc40733a6d8 100644
--- a/examples/v1/dashboards/CreateDashboard_2882802132.java
+++ b/examples/v1/dashboards/CreateDashboard_2882802132.java
@@ -9,12 +9,12 @@
import com.datadog.api.client.v1.model.FormulaAndFunctionMetricQueryDefinition;
import com.datadog.api.client.v1.model.FormulaAndFunctionQueryDefinition;
import com.datadog.api.client.v1.model.HostMapWidgetDefinition;
+import com.datadog.api.client.v1.model.HostMapWidgetDefinitionRequestType;
import com.datadog.api.client.v1.model.HostMapWidgetDefinitionRequests;
import com.datadog.api.client.v1.model.HostMapWidgetDefinitionType;
import com.datadog.api.client.v1.model.HostMapWidgetDimension;
import com.datadog.api.client.v1.model.HostMapWidgetFormula;
import com.datadog.api.client.v1.model.HostMapWidgetGroupBy;
-import com.datadog.api.client.v1.model.HostMapWidgetInfrastructureRequestRequestType;
import com.datadog.api.client.v1.model.HostMapWidgetInfrastructureStyle;
import com.datadog.api.client.v1.model.HostMapWidgetNodeType;
import com.datadog.api.client.v1.model.HostMapWidgetScalarRequest;
@@ -48,7 +48,7 @@ public static void main(String[] args) {
.requests(
new HostMapWidgetDefinitionRequests()
.requestType(
- HostMapWidgetInfrastructureRequestRequestType
+ HostMapWidgetDefinitionRequestType
.INFRASTRUCTURE_HOSTMAP)
.nodeType(HostMapWidgetNodeType.HOST)
.filter("env:prod")
diff --git a/src/main/java/com/datadog/api/client/v1/model/DatasetListQuery.java b/src/main/java/com/datadog/api/client/v1/model/DatasetListQuery.java
new file mode 100644
index 00000000000..652c8bff8e4
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/DatasetListQuery.java
@@ -0,0 +1,297 @@
+/*
+ * 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;
+
+/** Query that lists the rows of a published dataset (a DDSQL query) without aggregation. */
+@JsonPropertyOrder({
+ DatasetListQuery.JSON_PROPERTY_DATA_SOURCE,
+ DatasetListQuery.JSON_PROPERTY_DATASET_ID,
+ DatasetListQuery.JSON_PROPERTY_DATASET_PROVIDER,
+ DatasetListQuery.JSON_PROPERTY_FILTER,
+ DatasetListQuery.JSON_PROPERTY_LIMIT,
+ DatasetListQuery.JSON_PROPERTY_SORT
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class DatasetListQuery {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DATA_SOURCE = "data_source";
+ private DatasetListQueryDataSourceType dataSource;
+
+ public static final String JSON_PROPERTY_DATASET_ID = "dataset_id";
+ private String datasetId;
+
+ public static final String JSON_PROPERTY_DATASET_PROVIDER = "dataset_provider";
+ private PublishedDatasetProvider datasetProvider;
+
+ public static final String JSON_PROPERTY_FILTER = "filter";
+ private String filter;
+
+ public static final String JSON_PROPERTY_LIMIT = "limit";
+ private Long limit;
+
+ public static final String JSON_PROPERTY_SORT = "sort";
+ private DatasetListQuerySort sort;
+
+ public DatasetListQuery() {}
+
+ @JsonCreator
+ public DatasetListQuery(
+ @JsonProperty(required = true, value = JSON_PROPERTY_DATA_SOURCE)
+ DatasetListQueryDataSourceType dataSource,
+ @JsonProperty(required = true, value = JSON_PROPERTY_DATASET_ID) String datasetId,
+ @JsonProperty(required = true, value = JSON_PROPERTY_DATASET_PROVIDER)
+ PublishedDatasetProvider datasetProvider) {
+ this.dataSource = dataSource;
+ this.unparsed |= !dataSource.isValid();
+ this.datasetId = datasetId;
+ this.datasetProvider = datasetProvider;
+ this.unparsed |= !datasetProvider.isValid();
+ }
+
+ public DatasetListQuery dataSource(DatasetListQueryDataSourceType dataSource) {
+ this.dataSource = dataSource;
+ this.unparsed |= !dataSource.isValid();
+ return this;
+ }
+
+ /**
+ * Identifies this as a published-dataset list query.
+ *
+ * @return dataSource
+ */
+ @JsonProperty(JSON_PROPERTY_DATA_SOURCE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public DatasetListQueryDataSourceType getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(DatasetListQueryDataSourceType dataSource) {
+ if (!dataSource.isValid()) {
+ this.unparsed = true;
+ }
+ this.dataSource = dataSource;
+ }
+
+ public DatasetListQuery datasetId(String datasetId) {
+ this.datasetId = datasetId;
+ return this;
+ }
+
+ /**
+ * ID of the published dataset to query.
+ *
+ * @return datasetId
+ */
+ @JsonProperty(JSON_PROPERTY_DATASET_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getDatasetId() {
+ return datasetId;
+ }
+
+ public void setDatasetId(String datasetId) {
+ this.datasetId = datasetId;
+ }
+
+ public DatasetListQuery datasetProvider(PublishedDatasetProvider datasetProvider) {
+ this.datasetProvider = datasetProvider;
+ this.unparsed |= !datasetProvider.isValid();
+ return this;
+ }
+
+ /**
+ * Product page that published the dataset queried by a DatasetListQuery.
+ * ddsql_query is the only provider currently supported for host map widgets.
+ *
+ * @return datasetProvider
+ */
+ @JsonProperty(JSON_PROPERTY_DATASET_PROVIDER)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public PublishedDatasetProvider getDatasetProvider() {
+ return datasetProvider;
+ }
+
+ public void setDatasetProvider(PublishedDatasetProvider datasetProvider) {
+ if (!datasetProvider.isValid()) {
+ this.unparsed = true;
+ }
+ this.datasetProvider = datasetProvider;
+ }
+
+ public DatasetListQuery filter(String filter) {
+ this.filter = filter;
+ return this;
+ }
+
+ /**
+ * Filter applied to the dataset's rows, using events-style search syntax.
+ *
+ * @return filter
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_FILTER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getFilter() {
+ return filter;
+ }
+
+ public void setFilter(String filter) {
+ this.filter = filter;
+ }
+
+ public DatasetListQuery limit(Long limit) {
+ this.limit = limit;
+ return this;
+ }
+
+ /**
+ * Maximum number of rows to return from the dataset query.
+ *
+ * @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 DatasetListQuery sort(DatasetListQuerySort sort) {
+ this.sort = sort;
+ this.unparsed |= sort.unparsed;
+ return this;
+ }
+
+ /**
+ * Sort configuration for a DatasetListQuery.
+ *
+ * @return sort
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SORT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public DatasetListQuerySort getSort() {
+ return sort;
+ }
+
+ public void setSort(DatasetListQuerySort sort) {
+ this.sort = sort;
+ }
+
+ /**
+ * 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 DatasetListQuery
+ */
+ @JsonAnySetter
+ public DatasetListQuery 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 DatasetListQuery object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ DatasetListQuery datasetListQuery = (DatasetListQuery) o;
+ return Objects.equals(this.dataSource, datasetListQuery.dataSource)
+ && Objects.equals(this.datasetId, datasetListQuery.datasetId)
+ && Objects.equals(this.datasetProvider, datasetListQuery.datasetProvider)
+ && Objects.equals(this.filter, datasetListQuery.filter)
+ && Objects.equals(this.limit, datasetListQuery.limit)
+ && Objects.equals(this.sort, datasetListQuery.sort)
+ && Objects.equals(this.additionalProperties, datasetListQuery.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ dataSource, datasetId, datasetProvider, filter, limit, sort, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class DatasetListQuery {\n");
+ sb.append(" dataSource: ").append(toIndentedString(dataSource)).append("\n");
+ sb.append(" datasetId: ").append(toIndentedString(datasetId)).append("\n");
+ sb.append(" datasetProvider: ").append(toIndentedString(datasetProvider)).append("\n");
+ sb.append(" filter: ").append(toIndentedString(filter)).append("\n");
+ sb.append(" limit: ").append(toIndentedString(limit)).append("\n");
+ sb.append(" sort: ").append(toIndentedString(sort)).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/DatasetListQueryDataSourceType.java b/src/main/java/com/datadog/api/client/v1/model/DatasetListQueryDataSourceType.java
new file mode 100644
index 00000000000..0ed5aae8bd2
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/DatasetListQueryDataSourceType.java
@@ -0,0 +1,57 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v1.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** Identifies this as a published-dataset list query. */
+@JsonSerialize(
+ using = DatasetListQueryDataSourceType.DatasetListQueryDataSourceTypeSerializer.class)
+public class DatasetListQueryDataSourceType extends ModelEnum {
+
+ private static final Set allowedValues = new HashSet(Arrays.asList("dataset"));
+
+ public static final DatasetListQueryDataSourceType DATASET =
+ new DatasetListQueryDataSourceType("dataset");
+
+ DatasetListQueryDataSourceType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class DatasetListQueryDataSourceTypeSerializer
+ extends StdSerializer {
+ public DatasetListQueryDataSourceTypeSerializer(Class t) {
+ super(t);
+ }
+
+ public DatasetListQueryDataSourceTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ DatasetListQueryDataSourceType value, JsonGenerator jgen, SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static DatasetListQueryDataSourceType fromValue(String value) {
+ return new DatasetListQueryDataSourceType(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v1/model/DatasetListQuerySort.java b/src/main/java/com/datadog/api/client/v1/model/DatasetListQuerySort.java
new file mode 100644
index 00000000000..8a3db74627a
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/DatasetListQuerySort.java
@@ -0,0 +1,155 @@
+/*
+ * 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;
+
+/** Sort configuration for a DatasetListQuery. */
+@JsonPropertyOrder({DatasetListQuerySort.JSON_PROPERTY_FIELDS})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class DatasetListQuerySort {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_FIELDS = "fields";
+ private List fields = new ArrayList<>();
+
+ public DatasetListQuerySort() {}
+
+ @JsonCreator
+ public DatasetListQuerySort(
+ @JsonProperty(required = true, value = JSON_PROPERTY_FIELDS)
+ List fields) {
+ this.fields = fields;
+ }
+
+ public DatasetListQuerySort fields(List fields) {
+ this.fields = fields;
+ for (DatasetListQuerySortField item : fields) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public DatasetListQuerySort addFieldsItem(DatasetListQuerySortField fieldsItem) {
+ this.fields.add(fieldsItem);
+ this.unparsed |= fieldsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * List of fields to sort the rows by, applied in order.
+ *
+ * @return fields
+ */
+ @JsonProperty(JSON_PROPERTY_FIELDS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public List getFields() {
+ return fields;
+ }
+
+ public void setFields(List fields) {
+ this.fields = fields;
+ }
+
+ /**
+ * 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 DatasetListQuerySort
+ */
+ @JsonAnySetter
+ public DatasetListQuerySort 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 DatasetListQuerySort object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ DatasetListQuerySort datasetListQuerySort = (DatasetListQuerySort) o;
+ return Objects.equals(this.fields, datasetListQuerySort.fields)
+ && Objects.equals(this.additionalProperties, datasetListQuerySort.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(fields, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class DatasetListQuerySort {\n");
+ sb.append(" fields: ").append(toIndentedString(fields)).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/DatasetListQuerySortField.java b/src/main/java/com/datadog/api/client/v1/model/DatasetListQuerySortField.java
new file mode 100644
index 00000000000..07e5154cf6b
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/DatasetListQuerySortField.java
@@ -0,0 +1,179 @@
+/*
+ * 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 sort directive for a DatasetListQuery. */
+@JsonPropertyOrder({
+ DatasetListQuerySortField.JSON_PROPERTY_NAME,
+ DatasetListQuerySortField.JSON_PROPERTY_ORDER
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class DatasetListQuerySortField {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_NAME = "name";
+ private String name;
+
+ public static final String JSON_PROPERTY_ORDER = "order";
+ private QuerySortOrder order = QuerySortOrder.DESC;
+
+ public DatasetListQuerySortField() {}
+
+ @JsonCreator
+ public DatasetListQuerySortField(
+ @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name,
+ @JsonProperty(required = true, value = JSON_PROPERTY_ORDER) QuerySortOrder order) {
+ this.name = name;
+ this.order = order;
+ this.unparsed |= !order.isValid();
+ }
+
+ public DatasetListQuerySortField name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Name of the field to sort on.
+ *
+ * @return name
+ */
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public DatasetListQuerySortField order(QuerySortOrder order) {
+ this.order = order;
+ this.unparsed |= !order.isValid();
+ return this;
+ }
+
+ /**
+ * Direction of sort.
+ *
+ * @return order
+ */
+ @JsonProperty(JSON_PROPERTY_ORDER)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public QuerySortOrder getOrder() {
+ return order;
+ }
+
+ public void setOrder(QuerySortOrder order) {
+ if (!order.isValid()) {
+ this.unparsed = true;
+ }
+ this.order = order;
+ }
+
+ /**
+ * 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 DatasetListQuerySortField
+ */
+ @JsonAnySetter
+ public DatasetListQuerySortField 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 DatasetListQuerySortField object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ DatasetListQuerySortField datasetListQuerySortField = (DatasetListQuerySortField) o;
+ return Objects.equals(this.name, datasetListQuerySortField.name)
+ && Objects.equals(this.order, datasetListQuerySortField.order)
+ && Objects.equals(
+ this.additionalProperties, datasetListQuerySortField.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, order, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class DatasetListQuerySortField {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+ sb.append(" order: ").append(toIndentedString(order)).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/HostMapRequest.java b/src/main/java/com/datadog/api/client/v1/model/HostMapRequest.java
index 08730031e95..c442bac67f1 100644
--- a/src/main/java/com/datadog/api/client/v1/model/HostMapRequest.java
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapRequest.java
@@ -16,7 +16,14 @@
import java.util.Map;
import java.util.Objects;
-/** Updated host map. */
+/**
+ * Deprecated - Legacy metric-based host map request. Use the infrastructure-backed (
+ * request_type: infrastructure_hostmap) or DDSQL (request_type: data_projection
+ * ) format instead.
+ *
+ * @deprecated
+ */
+@Deprecated
@JsonPropertyOrder({
HostMapRequest.JSON_PROPERTY_APM_QUERY,
HostMapRequest.JSON_PROPERTY_EVENT_QUERY,
diff --git a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinition.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinition.java
index 9eefc1fa06c..0e30c1c2f6e 100644
--- a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinition.java
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinition.java
@@ -166,10 +166,14 @@ public HostMapWidgetDefinition addGroupItem(String groupItem) {
}
/**
- * List of tag prefixes to group by.
+ * Deprecated - Only used by the legacy metric-based format. Use group_by
+ * (infrastructure) or a group dimension (DDSQL) inside requests
+ * instead.
*
* @return group
+ * @deprecated
*/
+ @Deprecated
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_GROUP)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
@@ -177,6 +181,7 @@ public List getGroup() {
return group;
}
+ @Deprecated
public void setGroup(List group) {
this.group = group;
}
@@ -187,10 +192,13 @@ public HostMapWidgetDefinition noGroupHosts(Boolean noGroupHosts) {
}
/**
- * Whether to show the hosts that don’t fit in a group.
+ * Deprecated - Only used by the legacy metric-based format. Use no_group_hosts
+ * inside requests instead.
*
* @return noGroupHosts
+ * @deprecated
*/
+ @Deprecated
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_NO_GROUP_HOSTS)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
@@ -198,6 +206,7 @@ public Boolean getNoGroupHosts() {
return noGroupHosts;
}
+ @Deprecated
public void setNoGroupHosts(Boolean noGroupHosts) {
this.noGroupHosts = noGroupHosts;
}
@@ -208,10 +217,13 @@ public HostMapWidgetDefinition noMetricHosts(Boolean noMetricHosts) {
}
/**
- * Whether to show the hosts with no metrics.
+ * Deprecated - Only used by the legacy metric-based format. Use no_metric_hosts
+ * inside requests instead.
*
* @return noMetricHosts
+ * @deprecated
*/
+ @Deprecated
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_NO_METRIC_HOSTS)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
@@ -219,6 +231,7 @@ public Boolean getNoMetricHosts() {
return noMetricHosts;
}
+ @Deprecated
public void setNoMetricHosts(Boolean noMetricHosts) {
this.noMetricHosts = noMetricHosts;
}
@@ -276,10 +289,11 @@ public HostMapWidgetDefinition requests(HostMapWidgetDefinitionRequests requests
}
/**
- * Query definition for the host map widget. Supports two mutually exclusive formats distinguished
- * by the presence of request_type: the legacy metric-based format (fill
- * /size) and the infrastructure-backed format (request_type,
- * node_type, enrichments).
+ * Query definition for the host map widget. Supports three mutually exclusive formats
+ * distinguished by request_type: the deprecated legacy metric-based format (
+ * fill/size, no request_type), the infrastructure-backed format
+ * (request_type: infrastructure_hostmap), and the DDSQL published-dataset format (
+ * request_type: data_projection).
*
* @return requests
*/
@@ -307,10 +321,13 @@ public HostMapWidgetDefinition addScopeItem(String scopeItem) {
}
/**
- * List of tags used to filter the map.
+ * Deprecated - Only used by the legacy metric-based format. Use filter inside
+ * requests instead.
*
* @return scope
+ * @deprecated
*/
+ @Deprecated
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_SCOPE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
@@ -318,6 +335,7 @@ public List getScope() {
return scope;
}
+ @Deprecated
public void setScope(List scope) {
this.scope = scope;
}
@@ -329,10 +347,13 @@ public HostMapWidgetDefinition style(HostMapWidgetDefinitionStyle style) {
}
/**
- * The style to apply to the widget.
+ * Deprecated - The style to apply to the legacy metric-based host map widget. Use
+ * HostMapWidgetInfrastructureStyle instead.
*
* @return style
+ * @deprecated
*/
+ @Deprecated
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_STYLE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
@@ -340,6 +361,7 @@ public HostMapWidgetDefinitionStyle getStyle() {
return style;
}
+ @Deprecated
public void setStyle(HostMapWidgetDefinitionStyle style) {
this.style = style;
}
diff --git a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequestType.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequestType.java
new file mode 100644
index 00000000000..121863c4429
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequestType.java
@@ -0,0 +1,65 @@
+/*
+ * 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;
+
+/**
+ * Identifies which host map request format the sibling fields on
+ * HostMapWidgetDefinitionRequests describe: an infrastructure-backed request or a DDSQL
+ * published-dataset request.
+ */
+@JsonSerialize(
+ using = HostMapWidgetDefinitionRequestType.HostMapWidgetDefinitionRequestTypeSerializer.class)
+public class HostMapWidgetDefinitionRequestType extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("infrastructure_hostmap", "data_projection"));
+
+ public static final HostMapWidgetDefinitionRequestType INFRASTRUCTURE_HOSTMAP =
+ new HostMapWidgetDefinitionRequestType("infrastructure_hostmap");
+ public static final HostMapWidgetDefinitionRequestType DATA_PROJECTION =
+ new HostMapWidgetDefinitionRequestType("data_projection");
+
+ HostMapWidgetDefinitionRequestType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class HostMapWidgetDefinitionRequestTypeSerializer
+ extends StdSerializer {
+ public HostMapWidgetDefinitionRequestTypeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public HostMapWidgetDefinitionRequestTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ HostMapWidgetDefinitionRequestType value, JsonGenerator jgen, SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static HostMapWidgetDefinitionRequestType fromValue(String value) {
+ return new HostMapWidgetDefinitionRequestType(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequests.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequests.java
index c1c9da3ea9b..2a8aac03f79 100644
--- a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequests.java
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequests.java
@@ -19,10 +19,11 @@
import java.util.Objects;
/**
- * Query definition for the host map widget. Supports two mutually exclusive formats distinguished
- * by the presence of request_type: the legacy metric-based format (fill/
- * size) and the infrastructure-backed format (request_type,
- * node_type, enrichments).
+ * Query definition for the host map widget. Supports three mutually exclusive formats distinguished
+ * by request_type: the deprecated legacy metric-based format (fill/
+ * size, no request_type), the infrastructure-backed format (
+ * request_type: infrastructure_hostmap), and the DDSQL published-dataset format (
+ * request_type: data_projection).
*/
@JsonPropertyOrder({
HostMapWidgetDefinitionRequests.JSON_PROPERTY_CHILD,
@@ -31,9 +32,12 @@
HostMapWidgetDefinitionRequests.JSON_PROPERTY_FILL,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_FILTER,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_GROUP_BY,
+ HostMapWidgetDefinitionRequests.JSON_PROPERTY_LIMIT,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_NO_GROUP_HOSTS,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_NO_METRIC_HOSTS,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_NODE_TYPE,
+ HostMapWidgetDefinitionRequests.JSON_PROPERTY_PROJECTION,
+ HostMapWidgetDefinitionRequests.JSON_PROPERTY_QUERY,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_REQUEST_TYPE,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_SIZE,
HostMapWidgetDefinitionRequests.JSON_PROPERTY_STYLE
@@ -60,6 +64,9 @@ public class HostMapWidgetDefinitionRequests {
public static final String JSON_PROPERTY_GROUP_BY = "group_by";
private List groupBy = null;
+ public static final String JSON_PROPERTY_LIMIT = "limit";
+ private Long limit;
+
public static final String JSON_PROPERTY_NO_GROUP_HOSTS = "no_group_hosts";
private Boolean noGroupHosts;
@@ -69,8 +76,14 @@ public class HostMapWidgetDefinitionRequests {
public static final String JSON_PROPERTY_NODE_TYPE = "node_type";
private HostMapWidgetNodeType nodeType;
+ public static final String JSON_PROPERTY_PROJECTION = "projection";
+ private HostMapWidgetProjection projection;
+
+ public static final String JSON_PROPERTY_QUERY = "query";
+ private DatasetListQuery query;
+
public static final String JSON_PROPERTY_REQUEST_TYPE = "request_type";
- private HostMapWidgetInfrastructureRequestRequestType requestType;
+ private HostMapWidgetDefinitionRequestType requestType;
public static final String JSON_PROPERTY_SIZE = "size";
private HostMapRequest size;
@@ -156,6 +169,7 @@ public HostMapWidgetDefinitionRequests addEnrichmentsItem(
/**
* Metric or event queries joined to the entity set. Each formula specifies a visual dimension.
+ * Only used by the infrastructure-backed format.
*
* @return enrichments
*/
@@ -177,10 +191,14 @@ public HostMapWidgetDefinitionRequests fill(HostMapRequest fill) {
}
/**
- * Updated host map.
+ * Deprecated - Legacy metric-based host map request. Use the infrastructure-backed (
+ * request_type: infrastructure_hostmap) or DDSQL (request_type: data_projection
+ * ) format instead.
*
* @return fill
+ * @deprecated
*/
+ @Deprecated
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_FILL)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
@@ -188,6 +206,7 @@ public HostMapRequest getFill() {
return fill;
}
+ @Deprecated
public void setFill(HostMapRequest fill) {
this.fill = fill;
}
@@ -198,7 +217,8 @@ public HostMapWidgetDefinitionRequests filter(String filter) {
}
/**
- * Filter string for the entity set in tag format (for example, env:prod).
+ * Filter string for the entity set in tag format (for example, env:prod). Only used
+ * by the infrastructure-backed format.
*
* @return filter
*/
@@ -232,7 +252,7 @@ public HostMapWidgetDefinitionRequests addGroupByItem(HostMapWidgetGroupBy group
/**
* Defines how entities are grouped into tiles. The ordering of entries implies the grouping
- * hierarchy.
+ * hierarchy. Only used by the infrastructure-backed format.
*
* @return groupBy
*/
@@ -247,6 +267,27 @@ public void setGroupBy(List groupBy) {
this.groupBy = groupBy;
}
+ public HostMapWidgetDefinitionRequests limit(Long limit) {
+ this.limit = limit;
+ return this;
+ }
+
+ /**
+ * Maximum number of rows to return from the dataset query. Only used by the DDSQL format.
+ *
+ * @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 HostMapWidgetDefinitionRequests noGroupHosts(Boolean noGroupHosts) {
this.noGroupHosts = noGroupHosts;
return this;
@@ -314,26 +355,75 @@ public void setNodeType(HostMapWidgetNodeType nodeType) {
this.nodeType = nodeType;
}
+ public HostMapWidgetDefinitionRequests projection(HostMapWidgetProjection projection) {
+ this.projection = projection;
+ this.unparsed |= projection.unparsed;
+ return this;
+ }
+
+ /**
+ * Projection for the DDSQL host map request. Maps dataset columns to map dimensions: node
+ * identifies the entity, repeated group entries define the grouping
+ * hierarchy (outermost first), and fill/size drive the tile color and
+ * size.
+ *
+ * @return projection
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PROJECTION)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public HostMapWidgetProjection getProjection() {
+ return projection;
+ }
+
+ public void setProjection(HostMapWidgetProjection projection) {
+ this.projection = projection;
+ }
+
+ public HostMapWidgetDefinitionRequests query(DatasetListQuery query) {
+ this.query = query;
+ this.unparsed |= query.unparsed;
+ return this;
+ }
+
+ /**
+ * Query that lists the rows of a published dataset (a DDSQL query) without aggregation.
+ *
+ * @return query
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_QUERY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public DatasetListQuery getQuery() {
+ return query;
+ }
+
+ public void setQuery(DatasetListQuery query) {
+ this.query = query;
+ }
+
public HostMapWidgetDefinitionRequests requestType(
- HostMapWidgetInfrastructureRequestRequestType requestType) {
+ HostMapWidgetDefinitionRequestType requestType) {
this.requestType = requestType;
this.unparsed |= !requestType.isValid();
return this;
}
/**
- * Identifies this as an infrastructure-backed host map request.
+ * Identifies which host map request format the sibling fields on
+ * HostMapWidgetDefinitionRequests describe: an infrastructure-backed request or a DDSQL
+ * published-dataset request.
*
* @return requestType
*/
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_REQUEST_TYPE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public HostMapWidgetInfrastructureRequestRequestType getRequestType() {
+ public HostMapWidgetDefinitionRequestType getRequestType() {
return requestType;
}
- public void setRequestType(HostMapWidgetInfrastructureRequestRequestType requestType) {
+ public void setRequestType(HostMapWidgetDefinitionRequestType requestType) {
if (!requestType.isValid()) {
this.unparsed = true;
}
@@ -347,10 +437,14 @@ public HostMapWidgetDefinitionRequests size(HostMapRequest size) {
}
/**
- * Updated host map.
+ * Deprecated - Legacy metric-based host map request. Use the infrastructure-backed (
+ * request_type: infrastructure_hostmap) or DDSQL (request_type: data_projection
+ * ) format instead.
*
* @return size
+ * @deprecated
*/
+ @Deprecated
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_SIZE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
@@ -358,6 +452,7 @@ public HostMapRequest getSize() {
return size;
}
+ @Deprecated
public void setSize(HostMapRequest size) {
this.size = size;
}
@@ -448,9 +543,12 @@ public boolean equals(Object o) {
&& Objects.equals(this.fill, hostMapWidgetDefinitionRequests.fill)
&& Objects.equals(this.filter, hostMapWidgetDefinitionRequests.filter)
&& Objects.equals(this.groupBy, hostMapWidgetDefinitionRequests.groupBy)
+ && Objects.equals(this.limit, hostMapWidgetDefinitionRequests.limit)
&& Objects.equals(this.noGroupHosts, hostMapWidgetDefinitionRequests.noGroupHosts)
&& Objects.equals(this.noMetricHosts, hostMapWidgetDefinitionRequests.noMetricHosts)
&& Objects.equals(this.nodeType, hostMapWidgetDefinitionRequests.nodeType)
+ && Objects.equals(this.projection, hostMapWidgetDefinitionRequests.projection)
+ && Objects.equals(this.query, hostMapWidgetDefinitionRequests.query)
&& Objects.equals(this.requestType, hostMapWidgetDefinitionRequests.requestType)
&& Objects.equals(this.size, hostMapWidgetDefinitionRequests.size)
&& Objects.equals(this.style, hostMapWidgetDefinitionRequests.style)
@@ -467,9 +565,12 @@ public int hashCode() {
fill,
filter,
groupBy,
+ limit,
noGroupHosts,
noMetricHosts,
nodeType,
+ projection,
+ query,
requestType,
size,
style,
@@ -486,9 +587,12 @@ public String toString() {
sb.append(" fill: ").append(toIndentedString(fill)).append("\n");
sb.append(" filter: ").append(toIndentedString(filter)).append("\n");
sb.append(" groupBy: ").append(toIndentedString(groupBy)).append("\n");
+ sb.append(" limit: ").append(toIndentedString(limit)).append("\n");
sb.append(" noGroupHosts: ").append(toIndentedString(noGroupHosts)).append("\n");
sb.append(" noMetricHosts: ").append(toIndentedString(noMetricHosts)).append("\n");
sb.append(" nodeType: ").append(toIndentedString(nodeType)).append("\n");
+ sb.append(" projection: ").append(toIndentedString(projection)).append("\n");
+ sb.append(" query: ").append(toIndentedString(query)).append("\n");
sb.append(" requestType: ").append(toIndentedString(requestType)).append("\n");
sb.append(" size: ").append(toIndentedString(size)).append("\n");
sb.append(" style: ").append(toIndentedString(style)).append("\n");
diff --git a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionStyle.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionStyle.java
index 6d7461b01b7..baf355884fd 100644
--- a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionStyle.java
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionStyle.java
@@ -16,7 +16,13 @@
import java.util.Map;
import java.util.Objects;
-/** The style to apply to the widget. */
+/**
+ * Deprecated - The style to apply to the legacy metric-based host map widget. Use
+ * HostMapWidgetInfrastructureStyle instead.
+ *
+ * @deprecated
+ */
+@Deprecated
@JsonPropertyOrder({
HostMapWidgetDefinitionStyle.JSON_PROPERTY_FILL_MAX,
HostMapWidgetDefinitionStyle.JSON_PROPERTY_FILL_MIN,
diff --git a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDimension.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDimension.java
index 91365736d7a..56434bfcaa8 100644
--- a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDimension.java
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDimension.java
@@ -18,16 +18,21 @@
import java.util.HashSet;
import java.util.Set;
-/** Visual dimension driven by a formula in the infrastructure host map widget. */
+/**
+ * Visual dimension for the host map widget. Used both by infrastructure-backed formulas and by
+ * DDSQL projection columns; group is only meaningful for DDSQL projection columns,
+ * where repeated entries define the grouping hierarchy.
+ */
@JsonSerialize(using = HostMapWidgetDimension.HostMapWidgetDimensionSerializer.class)
public class HostMapWidgetDimension extends ModelEnum {
private static final Set allowedValues =
- new HashSet(Arrays.asList("node", "fill", "size"));
+ new HashSet(Arrays.asList("node", "fill", "size", "group"));
public static final HostMapWidgetDimension NODE = new HostMapWidgetDimension("node");
public static final HostMapWidgetDimension FILL = new HostMapWidgetDimension("fill");
public static final HostMapWidgetDimension SIZE = new HostMapWidgetDimension("size");
+ public static final HostMapWidgetDimension GROUP = new HostMapWidgetDimension("group");
HostMapWidgetDimension(String value) {
super(value, allowedValues);
diff --git a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetFormula.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetFormula.java
index 4b473d29def..80f7c7657e2 100644
--- a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetFormula.java
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetFormula.java
@@ -83,7 +83,9 @@ public HostMapWidgetFormula dimension(HostMapWidgetDimension dimension) {
}
/**
- * Visual dimension driven by a formula in the infrastructure host map widget.
+ * Visual dimension for the host map widget. Used both by infrastructure-backed formulas and by
+ * DDSQL projection columns; group is only meaningful for DDSQL projection columns,
+ * where repeated entries define the grouping hierarchy.
*
* @return dimension
*/
diff --git a/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjection.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjection.java
new file mode 100644
index 00000000000..cf7ddefd21b
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjection.java
@@ -0,0 +1,196 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v1.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.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;
+
+/**
+ * Projection for the DDSQL host map request. Maps dataset columns to map dimensions: node
+ * identifies the entity, repeated group entries define the grouping hierarchy
+ * (outermost first), and fill/size drive the tile color and size.
+ */
+@JsonPropertyOrder({
+ HostMapWidgetProjection.JSON_PROPERTY_DIMENSIONS,
+ HostMapWidgetProjection.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class HostMapWidgetProjection {
+ @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 HostMapWidgetProjectionType type;
+
+ public HostMapWidgetProjection() {}
+
+ @JsonCreator
+ public HostMapWidgetProjection(
+ @JsonProperty(required = true, value = JSON_PROPERTY_DIMENSIONS)
+ List dimensions,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) HostMapWidgetProjectionType type) {
+ this.dimensions = dimensions;
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public HostMapWidgetProjection dimensions(
+ List dimensions) {
+ this.dimensions = dimensions;
+ for (HostMapWidgetProjectionDimensionMapping item : dimensions) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public HostMapWidgetProjection addDimensionsItem(
+ HostMapWidgetProjectionDimensionMapping dimensionsItem) {
+ this.dimensions.add(dimensionsItem);
+ this.unparsed |= dimensionsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * List of column-to-dimension mappings for the projection.
+ *
+ * @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 HostMapWidgetProjection type(HostMapWidgetProjectionType type) {
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ return this;
+ }
+
+ /**
+ * Type of the host map projection.
+ *
+ * @return type
+ */
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public HostMapWidgetProjectionType getType() {
+ return type;
+ }
+
+ public void setType(HostMapWidgetProjectionType 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 HostMapWidgetProjection
+ */
+ @JsonAnySetter
+ public HostMapWidgetProjection 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 HostMapWidgetProjection object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ HostMapWidgetProjection hostMapWidgetProjection = (HostMapWidgetProjection) o;
+ return Objects.equals(this.dimensions, hostMapWidgetProjection.dimensions)
+ && Objects.equals(this.type, hostMapWidgetProjection.type)
+ && Objects.equals(this.additionalProperties, hostMapWidgetProjection.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(dimensions, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class HostMapWidgetProjection {\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/HostMapWidgetProjectionDimensionMapping.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjectionDimensionMapping.java
new file mode 100644
index 00000000000..36003704dd5
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjectionDimensionMapping.java
@@ -0,0 +1,239 @@
+/*
+ * 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;
+
+/** Maps a dataset column to a host map visual dimension. */
+@JsonPropertyOrder({
+ HostMapWidgetProjectionDimensionMapping.JSON_PROPERTY_ALIAS,
+ HostMapWidgetProjectionDimensionMapping.JSON_PROPERTY_COLUMN,
+ HostMapWidgetProjectionDimensionMapping.JSON_PROPERTY_DIMENSION,
+ HostMapWidgetProjectionDimensionMapping.JSON_PROPERTY_NUMBER_FORMAT
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class HostMapWidgetProjectionDimensionMapping {
+ @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 HostMapWidgetDimension dimension;
+
+ public static final String JSON_PROPERTY_NUMBER_FORMAT = "number_format";
+ private WidgetNumberFormat numberFormat;
+
+ public HostMapWidgetProjectionDimensionMapping() {}
+
+ @JsonCreator
+ public HostMapWidgetProjectionDimensionMapping(
+ @JsonProperty(required = true, value = JSON_PROPERTY_COLUMN) String column,
+ @JsonProperty(required = true, value = JSON_PROPERTY_DIMENSION)
+ HostMapWidgetDimension dimension) {
+ this.column = column;
+ this.dimension = dimension;
+ this.unparsed |= !dimension.isValid();
+ }
+
+ public HostMapWidgetProjectionDimensionMapping alias(String alias) {
+ this.alias = alias;
+ return this;
+ }
+
+ /**
+ * Alias used to label the column instead of its name.
+ *
+ * @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 HostMapWidgetProjectionDimensionMapping column(String column) {
+ this.column = column;
+ return this;
+ }
+
+ /**
+ * Source column name from the dataset.
+ *
+ * @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 HostMapWidgetProjectionDimensionMapping dimension(HostMapWidgetDimension dimension) {
+ this.dimension = dimension;
+ this.unparsed |= !dimension.isValid();
+ return this;
+ }
+
+ /**
+ * Visual dimension for the host map widget. Used both by infrastructure-backed formulas and by
+ * DDSQL projection columns; group is only meaningful for DDSQL projection columns,
+ * where repeated entries define the grouping hierarchy.
+ *
+ * @return dimension
+ */
+ @JsonProperty(JSON_PROPERTY_DIMENSION)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public HostMapWidgetDimension getDimension() {
+ return dimension;
+ }
+
+ public void setDimension(HostMapWidgetDimension dimension) {
+ if (!dimension.isValid()) {
+ this.unparsed = true;
+ }
+ this.dimension = dimension;
+ }
+
+ public HostMapWidgetProjectionDimensionMapping 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 HostMapWidgetProjectionDimensionMapping
+ */
+ @JsonAnySetter
+ public HostMapWidgetProjectionDimensionMapping 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 HostMapWidgetProjectionDimensionMapping object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ HostMapWidgetProjectionDimensionMapping hostMapWidgetProjectionDimensionMapping =
+ (HostMapWidgetProjectionDimensionMapping) o;
+ return Objects.equals(this.alias, hostMapWidgetProjectionDimensionMapping.alias)
+ && Objects.equals(this.column, hostMapWidgetProjectionDimensionMapping.column)
+ && Objects.equals(this.dimension, hostMapWidgetProjectionDimensionMapping.dimension)
+ && Objects.equals(this.numberFormat, hostMapWidgetProjectionDimensionMapping.numberFormat)
+ && Objects.equals(
+ this.additionalProperties,
+ hostMapWidgetProjectionDimensionMapping.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(alias, column, dimension, numberFormat, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class HostMapWidgetProjectionDimensionMapping {\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/HostMapWidgetProjectionType.java b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjectionType.java
new file mode 100644
index 00000000000..1d84e3bab44
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjectionType.java
@@ -0,0 +1,56 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v1.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** Type of the host map projection. */
+@JsonSerialize(using = HostMapWidgetProjectionType.HostMapWidgetProjectionTypeSerializer.class)
+public class HostMapWidgetProjectionType extends ModelEnum {
+
+ private static final Set allowedValues = new HashSet(Arrays.asList("hostmap"));
+
+ public static final HostMapWidgetProjectionType HOSTMAP =
+ new HostMapWidgetProjectionType("hostmap");
+
+ HostMapWidgetProjectionType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class HostMapWidgetProjectionTypeSerializer
+ extends StdSerializer {
+ public HostMapWidgetProjectionTypeSerializer(Class t) {
+ super(t);
+ }
+
+ public HostMapWidgetProjectionTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ HostMapWidgetProjectionType value, JsonGenerator jgen, SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static HostMapWidgetProjectionType fromValue(String value) {
+ return new HostMapWidgetProjectionType(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v1/model/PublishedDatasetProvider.java b/src/main/java/com/datadog/api/client/v1/model/PublishedDatasetProvider.java
new file mode 100644
index 00000000000..da06032860d
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v1/model/PublishedDatasetProvider.java
@@ -0,0 +1,60 @@
+/*
+ * 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;
+
+/**
+ * Product page that published the dataset queried by a DatasetListQuery.
+ * ddsql_query is the only provider currently supported for host map widgets.
+ */
+@JsonSerialize(using = PublishedDatasetProvider.PublishedDatasetProviderSerializer.class)
+public class PublishedDatasetProvider extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("ddsql_query"));
+
+ public static final PublishedDatasetProvider DDSQL_QUERY =
+ new PublishedDatasetProvider("ddsql_query");
+
+ PublishedDatasetProvider(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class PublishedDatasetProviderSerializer
+ extends StdSerializer {
+ public PublishedDatasetProviderSerializer(Class t) {
+ super(t);
+ }
+
+ public PublishedDatasetProviderSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ PublishedDatasetProvider value, JsonGenerator jgen, SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static PublishedDatasetProvider fromValue(String value) {
+ return new PublishedDatasetProvider(value);
+ }
+}
diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.freeze
new file mode 100644
index 00000000000..932b74391ef
--- /dev/null
+++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.freeze
@@ -0,0 +1 @@
+2026-07-08T15:57:41.949Z
\ No newline at end of file
diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.json
new file mode 100644
index 00000000000..a9f057bda51
--- /dev/null
+++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.json
@@ -0,0 +1,58 @@
+[
+ {
+ "httpRequest": {
+ "body": {
+ "type": "JSON",
+ "json": "{\"description\":null,\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_hostmap_DDSQL_widget-1783526261\",\"widgets\":[{\"definition\":{\"requests\":{\"limit\":1000,\"projection\":{\"dimensions\":[{\"column\":\"entity_id\",\"dimension\":\"node\"},{\"column\":\"parent_id\",\"dimension\":\"group\"},{\"column\":\"cpu_usage\",\"dimension\":\"fill\"}],\"type\":\"hostmap\"},\"query\":{\"data_source\":\"dataset\",\"dataset_id\":\"abc-123-def\",\"dataset_provider\":\"ddsql_query\"},\"request_type\":\"data_projection\",\"style\":{\"palette\":\"green_to_orange\",\"palette_flip\":false}},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"hostmap\"},\"layout\":{\"height\":22,\"width\":47,\"x\":0,\"y\":0}}]}"
+ },
+ "headers": {},
+ "method": "POST",
+ "path": "/api/v1/dashboard",
+ "keepAlive": false,
+ "secure": true
+ },
+ "httpResponse": {
+ "body": "{\"id\":\"ei8-bm4-cy2\",\"title\":\"Test-Create_a_new_dashboard_with_hostmap_DDSQL_widget-1783526261\",\"description\":null,\"author_handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"author_name\":\"CI Account\",\"layout_type\":\"free\",\"url\":\"/dashboard/ei8-bm4-cy2/test-createanewdashboardwithhostmapddsqlwidget-1783526261\",\"template_variables\":[],\"widgets\":[{\"definition\":{\"requests\":{\"limit\":1000,\"projection\":{\"dimensions\":[{\"column\":\"entity_id\",\"dimension\":\"node\"},{\"column\":\"parent_id\",\"dimension\":\"group\"},{\"column\":\"cpu_usage\",\"dimension\":\"fill\"}],\"type\":\"hostmap\"},\"query\":{\"data_source\":\"dataset\",\"dataset_id\":\"abc-123-def\",\"dataset_provider\":\"ddsql_query\"},\"request_type\":\"data_projection\",\"style\":{\"palette\":\"green_to_orange\",\"palette_flip\":false}},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"hostmap\"},\"layout\":{\"height\":22,\"width\":47,\"x\":0,\"y\":0},\"id\":2962556261296626}],\"notify_list\":[],\"created_at\":\"2026-07-08T15:57:42.209375+00:00\",\"modified_at\":\"2026-07-08T15:57:42.209375+00:00\",\"restricted_roles\":[]}",
+ "headers": {
+ "Content-Type": [
+ "application/json"
+ ]
+ },
+ "statusCode": 200,
+ "reasonPhrase": "OK"
+ },
+ "times": {
+ "remainingTimes": 1
+ },
+ "timeToLive": {
+ "unlimited": true
+ },
+ "id": "0b5a1dda-94af-0a33-484a-f590a8bcb7ea"
+ },
+ {
+ "httpRequest": {
+ "headers": {},
+ "method": "DELETE",
+ "path": "/api/v1/dashboard/ei8-bm4-cy2",
+ "keepAlive": false,
+ "secure": true
+ },
+ "httpResponse": {
+ "body": "{\"deleted_dashboard_id\":\"ei8-bm4-cy2\"}",
+ "headers": {
+ "Content-Type": [
+ "application/json"
+ ]
+ },
+ "statusCode": 200,
+ "reasonPhrase": "OK"
+ },
+ "times": {
+ "remainingTimes": 1
+ },
+ "timeToLive": {
+ "unlimited": true
+ },
+ "id": "e9ee19f7-5927-c64e-5894-d09d33bc501d"
+ }
+]
\ 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 42df30e0a6f..28e57ec5e2a 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
@@ -581,6 +581,15 @@ Feature: Dashboards
And the response "widgets[0].definition.xaxis.num_buckets" is equal to 75
And the response "widgets[0].definition.markers" is equal to [{"display_type": "percentile", "value": "50"}, {"display_type": "percentile", "value": "99"}]
+ @team:DataDog/dashboards-backend
+ Scenario: Create a new dashboard with hostmap DDSQL widget
+ Given new "CreateDashboard" request
+ And body from file "dashboards_json_payload/hostmap_ddsql_widget.json"
+ When the request is sent
+ Then the response status is 200 OK
+ And the response "widgets[0].definition.type" is equal to "hostmap"
+ And the response "widgets[0].definition.requests" is equal to {"request_type": "data_projection", "limit": 1000, "query": {"data_source": "dataset", "dataset_provider": "ddsql_query", "dataset_id": "abc-123-def"}, "projection": {"type": "hostmap", "dimensions": [{"column": "entity_id", "dimension": "node"}, {"column": "parent_id", "dimension": "group"}, {"column": "cpu_usage", "dimension": "fill"}]}, "style": {"palette": "green_to_orange", "palette_flip": false}}
+
@team:DataDog/dashboards-backend
Scenario: Create a new dashboard with hostmap infra widget
Given new "CreateDashboard" request
diff --git a/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/hostmap_ddsql_widget.json b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/hostmap_ddsql_widget.json
new file mode 100644
index 00000000000..51cc5936b85
--- /dev/null
+++ b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/hostmap_ddsql_widget.json
@@ -0,0 +1,57 @@
+{
+ "title":"{{ unique }}",
+ "description":null,
+ "widgets":[
+ {
+ "layout":{
+ "x":0,
+ "y":0,
+ "width":47,
+ "height":22
+ },
+ "definition":{
+ "title":"",
+ "title_size":"16",
+ "title_align":"left",
+ "type":"hostmap",
+ "requests":{
+ "request_type":"data_projection",
+ "limit":1000,
+ "query":{
+ "data_source":"dataset",
+ "dataset_provider":"ddsql_query",
+ "dataset_id":"abc-123-def"
+ },
+ "projection":{
+ "type":"hostmap",
+ "dimensions":[
+ {
+ "column":"entity_id",
+ "dimension":"node"
+ },
+ {
+ "column":"parent_id",
+ "dimension":"group"
+ },
+ {
+ "column":"cpu_usage",
+ "dimension":"fill"
+ }
+ ]
+ },
+ "style":{
+ "palette":"green_to_orange",
+ "palette_flip":false
+ }
+ }
+ }
+ }
+ ],
+ "template_variables":[
+
+ ],
+ "layout_type":"free",
+ "notify_list":[
+
+ ]
+}
diff --git a/src/test/resources/com/datadog/api/client/v1/api/monitors.feature b/src/test/resources/com/datadog/api/client/v1/api/monitors.feature
index eabe7b2afe7..2a34a879f75 100644
--- a/src/test/resources/com/datadog/api/client/v1/api/monitors.feature
+++ b/src/test/resources/com/datadog/api/client/v1/api/monitors.feature
@@ -219,7 +219,7 @@ Feature: Monitors
Scenario: Edit a monitor returns "Bad Request" response
Given new "UpdateMonitor" request
And request contains "monitor_id" parameter from "REPLACE.ME"
- And body with value {"assets": [{"category": "runbook", "name": "Monitor Runbook", "resource_key": "12345", "resource_type": "notebook", "url": "/notebooks/12345"}], "draft_status": "published", "options": {"evaluation_delay": null, "include_tags": true, "min_failure_duration": 0, "min_location_failed": 1, "new_group_delay": null, "new_host_delay": 300, "no_data_timeframe": null, "notification_preset_name": "show_all", "notify_audit": false, "notify_by": [], "on_missing_data": "default", "renotify_interval": null, "renotify_occurrences": null, "renotify_statuses": ["alert"], "scheduling_options": {"custom_schedule": {"recurrences": [{"rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR", "start": "2023-08-31T16:30:00", "timezone": "Europe/Paris"}]}, "evaluation_window": {"day_starts": "04:00", "hour_starts": 0, "month_starts": 1, "timezone": "Europe/Paris"}}, "synthetics_check_id": null, "threshold_windows": {"recovery_window": null, "trigger_window": null}, "thresholds": {"critical_query": "formula(\"2 * query1\").rollup(\"avg\").last(\"6mo\")", "critical_recovery": null, "critical_recovery_query": "formula(\"1.5 * query1\").rollup(\"avg\").last(\"3mo\")", "ok": null, "unknown": null, "warning": null, "warning_recovery": null}, "timeout_h": null, "variables": [{"compute": {"aggregation": "avg", "interval": 60000, "metric": "@duration", "name": "compute_result", "source": "filter_query"}, "data_source": "rum", "group_by": [{"facet": "status", "limit": 10, "sort": {"aggregation": "avg", "order": "desc"}, "source": "filter_query"}], "indexes": ["days-3", "days-7"], "name": "query_errors", "search": {"query": "service:query"}}]}, "priority": null, "restricted_roles": [], "tags": [], "type": "query alert"}
+ And body with value {"assets": [{"category": "runbook", "name": "Monitor Runbook", "resource_key": "12345", "resource_type": "notebook", "url": "/notebooks/12345"}], "draft_status": "published", "options": {"evaluation_delay": null, "include_tags": true, "min_failure_duration": 0, "min_location_failed": 1, "new_group_delay": null, "new_host_delay": 300, "no_data_timeframe": null, "notification_preset_name": "show_all", "notify_audit": false, "notify_by": [], "on_missing_data": "default", "renotify_interval": null, "renotify_occurrences": null, "renotify_statuses": ["alert"], "scheduling_options": {"custom_schedule": {"recurrences": [{"rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR", "start": "2023-08-31T16:30:00", "timezone": "Europe/Paris"}]}, "evaluation_window": {"day_starts": "04:00", "hour_starts": 0, "month_starts": 1, "timezone": "Europe/Paris"}}, "synthetics_check_id": null, "threshold_windows": {"recovery_window": null, "trigger_window": null}, "thresholds": {"critical_query": "formula(\"2 * query1\").rollup(\"avg\").last(\"6mo\")", "critical_recovery": null, "critical_recovery_query": "formula(\"1.5 * query1\").rollup(\"avg\").last(\"3mo\")", "ok": null, "unknown": null, "warning": null, "warning_recovery": null}, "timeout_h": null, "variables": [{"compute": {"aggregation": "avg", "interval": 60000, "metric": "@duration", "name": "compute_result", "source": "filter_query"}, "data_source": "rum", "group_by": [{"facet": "status", "limit": 10, "sort": {"aggregation": "avg", "order": "asc"}, "source": "filter_query"}], "indexes": ["days-3", "days-7"], "name": "query_errors", "search": {"query": "service:query"}}]}, "priority": null, "restricted_roles": [], "tags": [], "type": "query alert"}
When the request is sent
Then the response status is 400 Bad Request