From 7416794bd7bb3e0111b34e05f5f47b26b724aae2 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Thu, 9 Jul 2026 09:10:01 +0000 Subject: [PATCH] Regenerate client from commit 7e2a1a8 of spec repo --- .generator/schemas/v1/openapi.yaml | 196 +++++++++++- .../CreateDashboard_2780500284.java | 93 ++++++ .../CreateDashboard_2882802132.java | 4 +- .../api/client/v1/model/DatasetListQuery.java | 297 ++++++++++++++++++ .../model/DatasetListQueryDataSourceType.java | 57 ++++ .../client/v1/model/DatasetListQuerySort.java | 155 +++++++++ .../v1/model/DatasetListQuerySortField.java | 179 +++++++++++ .../api/client/v1/model/HostMapRequest.java | 9 +- .../v1/model/HostMapWidgetDefinition.java | 40 ++- .../HostMapWidgetDefinitionRequestType.java | 65 ++++ .../HostMapWidgetDefinitionRequests.java | 130 +++++++- .../model/HostMapWidgetDefinitionStyle.java | 8 +- .../v1/model/HostMapWidgetDimension.java | 9 +- .../client/v1/model/HostMapWidgetFormula.java | 4 +- .../v1/model/HostMapWidgetProjection.java | 196 ++++++++++++ ...stMapWidgetProjectionDimensionMapping.java | 239 ++++++++++++++ .../v1/model/HostMapWidgetProjectionType.java | 56 ++++ .../v1/model/PublishedDatasetProvider.java | 60 ++++ ...dashboard_with_hostmap_DDSQL_widget.freeze | 1 + ...w_dashboard_with_hostmap_DDSQL_widget.json | 58 ++++ .../api/client/v1/api/dashboards.feature | 9 + .../hostmap_ddsql_widget.json | 57 ++++ .../api/client/v1/api/monitors.feature | 2 +- 23 files changed, 1882 insertions(+), 42 deletions(-) create mode 100644 examples/v1/dashboards/CreateDashboard_2780500284.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/DatasetListQuery.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/DatasetListQueryDataSourceType.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/DatasetListQuerySort.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/DatasetListQuerySortField.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/HostMapWidgetDefinitionRequestType.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjection.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjectionDimensionMapping.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/HostMapWidgetProjectionType.java create mode 100644 src/main/java/com/datadog/api/client/v1/model/PublishedDatasetProvider.java create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.freeze create mode 100644 src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_hostmap_DDSQL_widget.json create mode 100644 src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/hostmap_ddsql_widget.json 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