diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 455b80b93a7..1c8fca287a4 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -21724,6 +21724,46 @@ components: type: object TopologyMapWidgetDefinition: description: This widget displays a topology of nodes and edges for different data sources. It replaces the service map widget. + oneOf: + - $ref: "#/components/schemas/TopologyMapWidgetDefinitionDataStreams" + - $ref: "#/components/schemas/TopologyMapWidgetDefinitionServiceMap" + TopologyMapWidgetDefinitionDataStreams: + additionalProperties: false + description: Topology map widget backed by the data streams data source. + properties: + custom_links: + description: List of custom links. + items: + $ref: "#/components/schemas/WidgetCustomLink" + type: array + description: + description: The description of the widget. + type: string + requests: + description: One Topology request. + items: + $ref: "#/components/schemas/TopologyRequestDataStreams" + minItems: 1 + type: array + time: + $ref: "#/components/schemas/WidgetTime" + title: + description: Title of your widget. + type: string + title_align: + $ref: "#/components/schemas/WidgetTextAlign" + title_size: + description: Size of the title. + type: string + type: + $ref: "#/components/schemas/TopologyMapWidgetDefinitionType" + required: + - type + - requests + type: object + TopologyMapWidgetDefinitionServiceMap: + additionalProperties: false + description: Topology map widget backed by the service map data source. properties: custom_links: description: List of custom links. @@ -21734,11 +21774,13 @@ components: description: The description of the widget. type: string requests: - description: One or more Topology requests. + description: One Topology request. items: - $ref: "#/components/schemas/TopologyRequest" + $ref: "#/components/schemas/TopologyRequestServiceMap" minItems: 1 type: array + time: + $ref: "#/components/schemas/WidgetTime" title: description: Title of your widget. type: string @@ -21762,38 +21804,89 @@ components: type: string x-enum-varnames: - TOPOLOGY_MAP - TopologyQuery: - description: Query to service-based topology data sources like the service map or data streams. + TopologyQueryDataStreams: + additionalProperties: false + description: Query to the data streams topology data source. properties: data_source: - $ref: "#/components/schemas/TopologyQueryDataSource" + $ref: "#/components/schemas/TopologyQueryDataStreamsDataSource" filters: description: Your environment and primary tag (or * if enabled for your account). example: ["env:prod", "az:us-east"] items: - description: Environment or primary tag, generally in a key:value format + description: Environment or primary tag, generally in a key:value format. type: string minItems: 1 type: array + query_string: + description: A search string for filtering services. When set, this replaces the `service` field. + example: "service:myservice" + type: string service: - description: Name of the service - example: myService + description: (deprecated) Name of the service. Leave this empty and use query_string instead. + example: myservice type: string + required: + - data_source + - filters + - service type: object - TopologyQueryDataSource: - description: Name of the data source + TopologyQueryDataStreamsDataSource: + description: Name of the data source. enum: - data_streams - - service_map + example: data_streams type: string x-enum-varnames: - DATA_STREAMS + TopologyQueryServiceMap: + additionalProperties: false + description: Query to the service map topology data source. + properties: + data_source: + $ref: "#/components/schemas/TopologyQueryServiceMapDataSource" + filters: + description: Your environment and primary tag (or * if enabled for your account). + example: ["env:prod", "az:us-east"] + items: + description: Environment or primary tag, generally in a key:value format + type: string + minItems: 1 + type: array + query_string: + description: A search string for filtering services. When set, this replaces the `service` field. + example: "service:myservice" + type: string + service: + description: (deprecated) Name of the service. Leave this empty and use query_string instead. + example: myservice + type: string + required: + - data_source + - filters + - service + type: object + TopologyQueryServiceMapDataSource: + description: Name of the data source. + enum: + - service_map + example: service_map + type: string + x-enum-varnames: - SERVICE_MAP - TopologyRequest: - description: Request that will return nodes and edges to be used by topology map. + TopologyRequestDataStreams: + description: Request that returns nodes and edges from the data streams data source. + properties: + query: + $ref: "#/components/schemas/TopologyQueryDataStreams" + request_type: + $ref: "#/components/schemas/TopologyRequestType" + type: object + TopologyRequestServiceMap: + description: Request that returns nodes and edges from the service map data source. properties: query: - $ref: "#/components/schemas/TopologyQuery" + $ref: "#/components/schemas/TopologyQueryServiceMap" request_type: $ref: "#/components/schemas/TopologyRequestType" type: object diff --git a/examples/v1/dashboards/CreateDashboard_2652180930.java b/examples/v1/dashboards/CreateDashboard_2652180930.java index 202790b3596..438363d4eb0 100644 --- a/examples/v1/dashboards/CreateDashboard_2652180930.java +++ b/examples/v1/dashboards/CreateDashboard_2652180930.java @@ -6,10 +6,11 @@ import com.datadog.api.client.v1.model.Dashboard; import com.datadog.api.client.v1.model.DashboardLayoutType; import com.datadog.api.client.v1.model.TopologyMapWidgetDefinition; +import com.datadog.api.client.v1.model.TopologyMapWidgetDefinitionServiceMap; import com.datadog.api.client.v1.model.TopologyMapWidgetDefinitionType; -import com.datadog.api.client.v1.model.TopologyQuery; -import com.datadog.api.client.v1.model.TopologyQueryDataSource; -import com.datadog.api.client.v1.model.TopologyRequest; +import com.datadog.api.client.v1.model.TopologyQueryServiceMap; +import com.datadog.api.client.v1.model.TopologyQueryServiceMapDataSource; +import com.datadog.api.client.v1.model.TopologyRequestServiceMap; import com.datadog.api.client.v1.model.TopologyRequestType; import com.datadog.api.client.v1.model.Widget; import com.datadog.api.client.v1.model.WidgetDefinition; @@ -33,23 +34,26 @@ public static void main(String[] args) { .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L)) .definition( new WidgetDefinition( - new TopologyMapWidgetDefinition() - .title("") - .titleSize("16") - .titleAlign(WidgetTextAlign.LEFT) - .type(TopologyMapWidgetDefinitionType.TOPOLOGY_MAP) - .requests( - Collections.singletonList( - new TopologyRequest() - .requestType(TopologyRequestType.TOPOLOGY) - .query( - new TopologyQuery() - .dataSource( - TopologyQueryDataSource.SERVICE_MAP) - .service("") - .filters( - Arrays.asList( - "env:none", "environment:*"))))))))) + new TopologyMapWidgetDefinition( + new TopologyMapWidgetDefinitionServiceMap() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .type(TopologyMapWidgetDefinitionType.TOPOLOGY_MAP) + .requests( + Collections.singletonList( + new TopologyRequestServiceMap() + .requestType(TopologyRequestType.TOPOLOGY) + .query( + new TopologyQueryServiceMap() + .dataSource( + TopologyQueryServiceMapDataSource + .SERVICE_MAP) + .service("") + .filters( + Arrays.asList( + "env:none", + "environment:*")))))))))) .layoutType(DashboardLayoutType.FREE); try { diff --git a/examples/v1/dashboards/CreateDashboard_2815497946.java b/examples/v1/dashboards/CreateDashboard_2815497946.java new file mode 100644 index 00000000000..8fe73645a6c --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_2815497946.java @@ -0,0 +1,70 @@ +// Create a new dashboard with topology_map data_streams 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.TopologyMapWidgetDefinition; +import com.datadog.api.client.v1.model.TopologyMapWidgetDefinitionDataStreams; +import com.datadog.api.client.v1.model.TopologyMapWidgetDefinitionType; +import com.datadog.api.client.v1.model.TopologyQueryDataStreams; +import com.datadog.api.client.v1.model.TopologyQueryDataStreamsDataSource; +import com.datadog.api.client.v1.model.TopologyRequestDataStreams; +import com.datadog.api.client.v1.model.TopologyRequestType; +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.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + DashboardsApi apiInstance = new DashboardsApi(defaultClient); + + Dashboard body = + new Dashboard() + .title("Example-Dashboard") + .description("") + .widgets( + Collections.singletonList( + new Widget() + .layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L)) + .definition( + new WidgetDefinition( + new TopologyMapWidgetDefinition( + new TopologyMapWidgetDefinitionDataStreams() + .title("") + .titleSize("16") + .titleAlign(WidgetTextAlign.LEFT) + .type(TopologyMapWidgetDefinitionType.TOPOLOGY_MAP) + .requests( + Collections.singletonList( + new TopologyRequestDataStreams() + .requestType(TopologyRequestType.TOPOLOGY) + .query( + new TopologyQueryDataStreams() + .dataSource( + TopologyQueryDataStreamsDataSource + .DATA_STREAMS) + .service("") + .filters( + Collections.singletonList( + "env:prod")) + .queryString( + "service:myservice"))))))))) + .layoutType(DashboardLayoutType.FREE); + + try { + Dashboard result = apiInstance.createDashboard(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling DashboardsApi#createDashboard"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinition.java b/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinition.java index 09b2a98bb38..1c56033436d 100644 --- a/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinition.java +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinition.java @@ -6,348 +6,299 @@ 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.datadog.api.client.AbstractOpenApiSchema; +import com.datadog.api.client.JSON; +import com.datadog.api.client.UnparsedObject; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import java.util.ArrayList; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import jakarta.ws.rs.core.GenericType; +import java.io.IOException; +import java.util.Collections; import java.util.HashMap; -import java.util.List; +import java.util.HashSet; import java.util.Map; -import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; -/** - * This widget displays a topology of nodes and edges for different data sources. It replaces the - * service map widget. - */ -@JsonPropertyOrder({ - TopologyMapWidgetDefinition.JSON_PROPERTY_CUSTOM_LINKS, - TopologyMapWidgetDefinition.JSON_PROPERTY_DESCRIPTION, - TopologyMapWidgetDefinition.JSON_PROPERTY_REQUESTS, - TopologyMapWidgetDefinition.JSON_PROPERTY_TITLE, - TopologyMapWidgetDefinition.JSON_PROPERTY_TITLE_ALIGN, - TopologyMapWidgetDefinition.JSON_PROPERTY_TITLE_SIZE, - TopologyMapWidgetDefinition.JSON_PROPERTY_TYPE -}) @jakarta.annotation.Generated( value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") -public class TopologyMapWidgetDefinition { - @JsonIgnore public boolean unparsed = false; - public static final String JSON_PROPERTY_CUSTOM_LINKS = "custom_links"; - private List customLinks = null; - - public static final String JSON_PROPERTY_DESCRIPTION = "description"; - private String description; - - public static final String JSON_PROPERTY_REQUESTS = "requests"; - private List requests = new ArrayList<>(); - - public static final String JSON_PROPERTY_TITLE = "title"; - private String title; - - public static final String JSON_PROPERTY_TITLE_ALIGN = "title_align"; - private WidgetTextAlign titleAlign; +@JsonDeserialize(using = TopologyMapWidgetDefinition.TopologyMapWidgetDefinitionDeserializer.class) +@JsonSerialize(using = TopologyMapWidgetDefinition.TopologyMapWidgetDefinitionSerializer.class) +public class TopologyMapWidgetDefinition extends AbstractOpenApiSchema { + private static final Logger log = Logger.getLogger(TopologyMapWidgetDefinition.class.getName()); - public static final String JSON_PROPERTY_TITLE_SIZE = "title_size"; - private String titleSize; - - public static final String JSON_PROPERTY_TYPE = "type"; - private TopologyMapWidgetDefinitionType type = TopologyMapWidgetDefinitionType.TOPOLOGY_MAP; - - public TopologyMapWidgetDefinition() {} - - @JsonCreator - public TopologyMapWidgetDefinition( - @JsonProperty(required = true, value = JSON_PROPERTY_REQUESTS) List requests, - @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) - TopologyMapWidgetDefinitionType type) { - this.requests = requests; - this.type = type; - this.unparsed |= !type.isValid(); - } + @JsonIgnore public boolean unparsed = false; - public TopologyMapWidgetDefinition customLinks(List customLinks) { - this.customLinks = customLinks; - for (WidgetCustomLink item : customLinks) { - this.unparsed |= item.unparsed; + public static class TopologyMapWidgetDefinitionSerializer + extends StdSerializer { + public TopologyMapWidgetDefinitionSerializer(Class t) { + super(t); } - return this; - } - public TopologyMapWidgetDefinition addCustomLinksItem(WidgetCustomLink customLinksItem) { - if (this.customLinks == null) { - this.customLinks = new ArrayList<>(); + public TopologyMapWidgetDefinitionSerializer() { + this(null); } - this.customLinks.add(customLinksItem); - this.unparsed |= customLinksItem.unparsed; - return this; - } - - /** - * List of custom links. - * - * @return customLinks - */ - @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_CUSTOM_LINKS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public List getCustomLinks() { - return customLinks; - } - public void setCustomLinks(List customLinks) { - this.customLinks = customLinks; - } - - public TopologyMapWidgetDefinition description(String description) { - this.description = description; - return this; + @Override + public void serialize( + TopologyMapWidgetDefinition value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.getActualInstance()); + } } - /** - * The description of the widget. - * - * @return description - */ - @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_DESCRIPTION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getDescription() { - return description; - } + public static class TopologyMapWidgetDefinitionDeserializer + extends StdDeserializer { + public TopologyMapWidgetDefinitionDeserializer() { + this(TopologyMapWidgetDefinition.class); + } - public void setDescription(String description) { - this.description = description; - } + public TopologyMapWidgetDefinitionDeserializer(Class vc) { + super(vc); + } - public TopologyMapWidgetDefinition requests(List requests) { - this.requests = requests; - for (TopologyRequest item : requests) { - this.unparsed |= item.unparsed; + @Override + public TopologyMapWidgetDefinition deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException, JsonProcessingException { + JsonNode tree = jp.readValueAsTree(); + Object deserialized = null; + Object tmp = null; + boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS); + int match = 0; + JsonToken token = tree.traverse(jp.getCodec()).nextToken(); + // deserialize TopologyMapWidgetDefinitionDataStreams + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (TopologyMapWidgetDefinitionDataStreams.class.equals(Integer.class) + || TopologyMapWidgetDefinitionDataStreams.class.equals(Long.class) + || TopologyMapWidgetDefinitionDataStreams.class.equals(Float.class) + || TopologyMapWidgetDefinitionDataStreams.class.equals(Double.class) + || TopologyMapWidgetDefinitionDataStreams.class.equals(Boolean.class) + || TopologyMapWidgetDefinitionDataStreams.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((TopologyMapWidgetDefinitionDataStreams.class.equals(Integer.class) + || TopologyMapWidgetDefinitionDataStreams.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((TopologyMapWidgetDefinitionDataStreams.class.equals(Float.class) + || TopologyMapWidgetDefinitionDataStreams.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (TopologyMapWidgetDefinitionDataStreams.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (TopologyMapWidgetDefinitionDataStreams.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(TopologyMapWidgetDefinitionDataStreams.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((TopologyMapWidgetDefinitionDataStreams) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, "Input data matches schema 'TopologyMapWidgetDefinitionDataStreams'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'TopologyMapWidgetDefinitionDataStreams'", + e); + } + + // deserialize TopologyMapWidgetDefinitionServiceMap + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (TopologyMapWidgetDefinitionServiceMap.class.equals(Integer.class) + || TopologyMapWidgetDefinitionServiceMap.class.equals(Long.class) + || TopologyMapWidgetDefinitionServiceMap.class.equals(Float.class) + || TopologyMapWidgetDefinitionServiceMap.class.equals(Double.class) + || TopologyMapWidgetDefinitionServiceMap.class.equals(Boolean.class) + || TopologyMapWidgetDefinitionServiceMap.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((TopologyMapWidgetDefinitionServiceMap.class.equals(Integer.class) + || TopologyMapWidgetDefinitionServiceMap.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((TopologyMapWidgetDefinitionServiceMap.class.equals(Float.class) + || TopologyMapWidgetDefinitionServiceMap.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (TopologyMapWidgetDefinitionServiceMap.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (TopologyMapWidgetDefinitionServiceMap.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()).readValueAs(TopologyMapWidgetDefinitionServiceMap.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((TopologyMapWidgetDefinitionServiceMap) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'TopologyMapWidgetDefinitionServiceMap'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'TopologyMapWidgetDefinitionServiceMap'", + e); + } + + TopologyMapWidgetDefinition ret = new TopologyMapWidgetDefinition(); + if (match == 1) { + ret.setActualInstance(deserialized); + } else { + Map res = + new ObjectMapper() + .readValue( + tree.traverse(jp.getCodec()).readValueAsTree().toString(), + new TypeReference>() {}); + ret.setActualInstance(new UnparsedObject(res)); + } + return ret; } - return this; - } - public TopologyMapWidgetDefinition addRequestsItem(TopologyRequest requestsItem) { - this.requests.add(requestsItem); - this.unparsed |= requestsItem.unparsed; - return this; + /** Handle deserialization of the 'null' value. */ + @Override + public TopologyMapWidgetDefinition getNullValue(DeserializationContext ctxt) + throws JsonMappingException { + throw new JsonMappingException( + ctxt.getParser(), "TopologyMapWidgetDefinition cannot be null"); + } } - /** - * One or more Topology requests. - * - * @return requests - */ - @JsonProperty(JSON_PROPERTY_REQUESTS) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public List getRequests() { - return requests; - } + // store a list of schema names defined in oneOf + public static final Map schemas = new HashMap(); - public void setRequests(List requests) { - this.requests = requests; + public TopologyMapWidgetDefinition() { + super("oneOf", Boolean.FALSE); } - public TopologyMapWidgetDefinition title(String title) { - this.title = title; - return this; + public TopologyMapWidgetDefinition(TopologyMapWidgetDefinitionDataStreams o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); } - /** - * Title of your widget. - * - * @return title - */ - @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_TITLE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getTitle() { - return title; + public TopologyMapWidgetDefinition(TopologyMapWidgetDefinitionServiceMap o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); } - public void setTitle(String title) { - this.title = title; + static { + schemas.put( + "TopologyMapWidgetDefinitionDataStreams", + new GenericType() {}); + schemas.put( + "TopologyMapWidgetDefinitionServiceMap", + new GenericType() {}); + JSON.registerDescendants( + TopologyMapWidgetDefinition.class, Collections.unmodifiableMap(schemas)); } - public TopologyMapWidgetDefinition titleAlign(WidgetTextAlign titleAlign) { - this.titleAlign = titleAlign; - this.unparsed |= !titleAlign.isValid(); - return this; + @Override + public Map getSchemas() { + return TopologyMapWidgetDefinition.schemas; } /** - * How to align the text on the widget. + * Set the instance that matches the oneOf child schema, check the instance parameter is valid + * against the oneOf child schemas: TopologyMapWidgetDefinitionDataStreams, + * TopologyMapWidgetDefinitionServiceMap * - * @return titleAlign + *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a + * composed schema (allOf, anyOf, oneOf). */ - @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_TITLE_ALIGN) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WidgetTextAlign getTitleAlign() { - return titleAlign; - } - - public void setTitleAlign(WidgetTextAlign titleAlign) { - if (!titleAlign.isValid()) { - this.unparsed = true; + @Override + public void setActualInstance(Object instance) { + if (JSON.isInstanceOf( + TopologyMapWidgetDefinitionDataStreams.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; } - this.titleAlign = titleAlign; - } - - public TopologyMapWidgetDefinition titleSize(String titleSize) { - this.titleSize = titleSize; - return this; - } - - /** - * Size of the title. - * - * @return titleSize - */ - @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_TITLE_SIZE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getTitleSize() { - return titleSize; - } - - public void setTitleSize(String titleSize) { - this.titleSize = titleSize; - } - - public TopologyMapWidgetDefinition type(TopologyMapWidgetDefinitionType type) { - this.type = type; - this.unparsed |= !type.isValid(); - return this; - } - - /** - * Type of the topology map widget. - * - * @return type - */ - @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public TopologyMapWidgetDefinitionType getType() { - return type; - } - - public void setType(TopologyMapWidgetDefinitionType type) { - if (!type.isValid()) { - this.unparsed = true; + if (JSON.isInstanceOf( + TopologyMapWidgetDefinitionServiceMap.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; } - 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 TopologyMapWidgetDefinition - */ - @JsonAnySetter - public TopologyMapWidgetDefinition putAdditionalProperty(String key, Object value) { - if (this.additionalProperties == null) { - this.additionalProperties = new HashMap(); + if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; } - this.additionalProperties.put(key, value); - return this; + throw new RuntimeException( + "Invalid instance type. Must be TopologyMapWidgetDefinitionDataStreams," + + " TopologyMapWidgetDefinitionServiceMap"); } /** - * Return the additional (undeclared) property. + * Get the actual instance, which can be the following: TopologyMapWidgetDefinitionDataStreams, + * TopologyMapWidgetDefinitionServiceMap * - * @return The additional properties + * @return The actual instance (TopologyMapWidgetDefinitionDataStreams, + * TopologyMapWidgetDefinitionServiceMap) */ - @JsonAnyGetter - public Map getAdditionalProperties() { - return additionalProperties; + @Override + public Object getActualInstance() { + return super.getActualInstance(); } /** - * Return the additional (undeclared) property with the specified name. + * Get the actual instance of `TopologyMapWidgetDefinitionDataStreams`. If the actual instance is + * not `TopologyMapWidgetDefinitionDataStreams`, the ClassCastException will be thrown. * - * @param key The arbitrary key to get - * @return The specific additional property for the given key + * @return The actual instance of `TopologyMapWidgetDefinitionDataStreams` + * @throws ClassCastException if the instance is not `TopologyMapWidgetDefinitionDataStreams` */ - public Object getAdditionalProperty(String key) { - if (this.additionalProperties == null) { - return null; - } - return this.additionalProperties.get(key); - } - - /** Return true if this TopologyMapWidgetDefinition object is equal to o. */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - TopologyMapWidgetDefinition topologyMapWidgetDefinition = (TopologyMapWidgetDefinition) o; - return Objects.equals(this.customLinks, topologyMapWidgetDefinition.customLinks) - && Objects.equals(this.description, topologyMapWidgetDefinition.description) - && Objects.equals(this.requests, topologyMapWidgetDefinition.requests) - && Objects.equals(this.title, topologyMapWidgetDefinition.title) - && Objects.equals(this.titleAlign, topologyMapWidgetDefinition.titleAlign) - && Objects.equals(this.titleSize, topologyMapWidgetDefinition.titleSize) - && Objects.equals(this.type, topologyMapWidgetDefinition.type) - && Objects.equals( - this.additionalProperties, topologyMapWidgetDefinition.additionalProperties); - } - - @Override - public int hashCode() { - return Objects.hash( - customLinks, - description, - requests, - title, - titleAlign, - titleSize, - type, - additionalProperties); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class TopologyMapWidgetDefinition {\n"); - sb.append(" customLinks: ").append(toIndentedString(customLinks)).append("\n"); - sb.append(" description: ").append(toIndentedString(description)).append("\n"); - sb.append(" requests: ").append(toIndentedString(requests)).append("\n"); - sb.append(" title: ").append(toIndentedString(title)).append("\n"); - sb.append(" titleAlign: ").append(toIndentedString(titleAlign)).append("\n"); - sb.append(" titleSize: ").append(toIndentedString(titleSize)).append("\n"); - sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" additionalProperties: ") - .append(toIndentedString(additionalProperties)) - .append("\n"); - sb.append('}'); - return sb.toString(); + public TopologyMapWidgetDefinitionDataStreams getTopologyMapWidgetDefinitionDataStreams() + throws ClassCastException { + return (TopologyMapWidgetDefinitionDataStreams) super.getActualInstance(); } /** - * Convert the given object to string with each line indented by 4 spaces (except the first line). + * Get the actual instance of `TopologyMapWidgetDefinitionServiceMap`. If the actual instance is + * not `TopologyMapWidgetDefinitionServiceMap`, the ClassCastException will be thrown. + * + * @return The actual instance of `TopologyMapWidgetDefinitionServiceMap` + * @throws ClassCastException if the instance is not `TopologyMapWidgetDefinitionServiceMap` */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); + public TopologyMapWidgetDefinitionServiceMap getTopologyMapWidgetDefinitionServiceMap() + throws ClassCastException { + return (TopologyMapWidgetDefinitionServiceMap) super.getActualInstance(); } } diff --git a/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinitionDataStreams.java b/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinitionDataStreams.java new file mode 100644 index 00000000000..df16fe6c6d5 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinitionDataStreams.java @@ -0,0 +1,321 @@ +/* + * 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.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.List; +import java.util.Objects; + +/** Topology map widget backed by the data streams data source. */ +@JsonPropertyOrder({ + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_CUSTOM_LINKS, + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_DESCRIPTION, + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_REQUESTS, + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_TIME, + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_TITLE, + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_TITLE_ALIGN, + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_TITLE_SIZE, + TopologyMapWidgetDefinitionDataStreams.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TopologyMapWidgetDefinitionDataStreams { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CUSTOM_LINKS = "custom_links"; + private List customLinks = null; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_REQUESTS = "requests"; + private List requests = new ArrayList<>(); + + public static final String JSON_PROPERTY_TIME = "time"; + private WidgetTime time; + + public static final String JSON_PROPERTY_TITLE = "title"; + private String title; + + public static final String JSON_PROPERTY_TITLE_ALIGN = "title_align"; + private WidgetTextAlign titleAlign; + + public static final String JSON_PROPERTY_TITLE_SIZE = "title_size"; + private String titleSize; + + public static final String JSON_PROPERTY_TYPE = "type"; + private TopologyMapWidgetDefinitionType type = TopologyMapWidgetDefinitionType.TOPOLOGY_MAP; + + public TopologyMapWidgetDefinitionDataStreams() {} + + @JsonCreator + public TopologyMapWidgetDefinitionDataStreams( + @JsonProperty(required = true, value = JSON_PROPERTY_REQUESTS) + List requests, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + TopologyMapWidgetDefinitionType type) { + this.requests = requests; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public TopologyMapWidgetDefinitionDataStreams customLinks(List customLinks) { + this.customLinks = customLinks; + for (WidgetCustomLink item : customLinks) { + this.unparsed |= item.unparsed; + } + return this; + } + + public TopologyMapWidgetDefinitionDataStreams addCustomLinksItem( + WidgetCustomLink customLinksItem) { + if (this.customLinks == null) { + this.customLinks = new ArrayList<>(); + } + this.customLinks.add(customLinksItem); + this.unparsed |= customLinksItem.unparsed; + return this; + } + + /** + * List of custom links. + * + * @return customLinks + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CUSTOM_LINKS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getCustomLinks() { + return customLinks; + } + + public void setCustomLinks(List customLinks) { + this.customLinks = customLinks; + } + + public TopologyMapWidgetDefinitionDataStreams description(String description) { + this.description = description; + return this; + } + + /** + * The description of the widget. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public TopologyMapWidgetDefinitionDataStreams requests( + List requests) { + this.requests = requests; + for (TopologyRequestDataStreams item : requests) { + this.unparsed |= item.unparsed; + } + return this; + } + + public TopologyMapWidgetDefinitionDataStreams addRequestsItem( + TopologyRequestDataStreams requestsItem) { + this.requests.add(requestsItem); + this.unparsed |= requestsItem.unparsed; + return this; + } + + /** + * One Topology request. + * + * @return requests + */ + @JsonProperty(JSON_PROPERTY_REQUESTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getRequests() { + return requests; + } + + public void setRequests(List requests) { + this.requests = requests; + } + + public TopologyMapWidgetDefinitionDataStreams time(WidgetTime time) { + this.time = time; + this.unparsed |= time.unparsed; + return this; + } + + /** + * Time setting for the widget. + * + * @return time + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetTime getTime() { + return time; + } + + public void setTime(WidgetTime time) { + this.time = time; + } + + public TopologyMapWidgetDefinitionDataStreams title(String title) { + this.title = title; + return this; + } + + /** + * Title of your widget. + * + * @return title + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public TopologyMapWidgetDefinitionDataStreams titleAlign(WidgetTextAlign titleAlign) { + this.titleAlign = titleAlign; + this.unparsed |= !titleAlign.isValid(); + return this; + } + + /** + * How to align the text on the widget. + * + * @return titleAlign + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE_ALIGN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetTextAlign getTitleAlign() { + return titleAlign; + } + + public void setTitleAlign(WidgetTextAlign titleAlign) { + if (!titleAlign.isValid()) { + this.unparsed = true; + } + this.titleAlign = titleAlign; + } + + public TopologyMapWidgetDefinitionDataStreams titleSize(String titleSize) { + this.titleSize = titleSize; + return this; + } + + /** + * Size of the title. + * + * @return titleSize + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE_SIZE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitleSize() { + return titleSize; + } + + public void setTitleSize(String titleSize) { + this.titleSize = titleSize; + } + + public TopologyMapWidgetDefinitionDataStreams type(TopologyMapWidgetDefinitionType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * Type of the topology map widget. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TopologyMapWidgetDefinitionType getType() { + return type; + } + + public void setType(TopologyMapWidgetDefinitionType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** Return true if this TopologyMapWidgetDefinitionDataStreams object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TopologyMapWidgetDefinitionDataStreams topologyMapWidgetDefinitionDataStreams = + (TopologyMapWidgetDefinitionDataStreams) o; + return Objects.equals(this.customLinks, topologyMapWidgetDefinitionDataStreams.customLinks) + && Objects.equals(this.description, topologyMapWidgetDefinitionDataStreams.description) + && Objects.equals(this.requests, topologyMapWidgetDefinitionDataStreams.requests) + && Objects.equals(this.time, topologyMapWidgetDefinitionDataStreams.time) + && Objects.equals(this.title, topologyMapWidgetDefinitionDataStreams.title) + && Objects.equals(this.titleAlign, topologyMapWidgetDefinitionDataStreams.titleAlign) + && Objects.equals(this.titleSize, topologyMapWidgetDefinitionDataStreams.titleSize) + && Objects.equals(this.type, topologyMapWidgetDefinitionDataStreams.type); + } + + @Override + public int hashCode() { + return Objects.hash( + customLinks, description, requests, time, title, titleAlign, titleSize, type); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TopologyMapWidgetDefinitionDataStreams {\n"); + sb.append(" customLinks: ").append(toIndentedString(customLinks)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" requests: ").append(toIndentedString(requests)).append("\n"); + sb.append(" time: ").append(toIndentedString(time)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + sb.append(" titleAlign: ").append(toIndentedString(titleAlign)).append("\n"); + sb.append(" titleSize: ").append(toIndentedString(titleSize)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append('}'); + 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/TopologyMapWidgetDefinitionServiceMap.java b/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinitionServiceMap.java new file mode 100644 index 00000000000..8b2a3bb12c8 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyMapWidgetDefinitionServiceMap.java @@ -0,0 +1,320 @@ +/* + * 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.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.List; +import java.util.Objects; + +/** Topology map widget backed by the service map data source. */ +@JsonPropertyOrder({ + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_CUSTOM_LINKS, + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_DESCRIPTION, + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_REQUESTS, + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_TIME, + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_TITLE, + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_TITLE_ALIGN, + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_TITLE_SIZE, + TopologyMapWidgetDefinitionServiceMap.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TopologyMapWidgetDefinitionServiceMap { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CUSTOM_LINKS = "custom_links"; + private List customLinks = null; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_REQUESTS = "requests"; + private List requests = new ArrayList<>(); + + public static final String JSON_PROPERTY_TIME = "time"; + private WidgetTime time; + + public static final String JSON_PROPERTY_TITLE = "title"; + private String title; + + public static final String JSON_PROPERTY_TITLE_ALIGN = "title_align"; + private WidgetTextAlign titleAlign; + + public static final String JSON_PROPERTY_TITLE_SIZE = "title_size"; + private String titleSize; + + public static final String JSON_PROPERTY_TYPE = "type"; + private TopologyMapWidgetDefinitionType type = TopologyMapWidgetDefinitionType.TOPOLOGY_MAP; + + public TopologyMapWidgetDefinitionServiceMap() {} + + @JsonCreator + public TopologyMapWidgetDefinitionServiceMap( + @JsonProperty(required = true, value = JSON_PROPERTY_REQUESTS) + List requests, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + TopologyMapWidgetDefinitionType type) { + this.requests = requests; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public TopologyMapWidgetDefinitionServiceMap customLinks(List customLinks) { + this.customLinks = customLinks; + for (WidgetCustomLink item : customLinks) { + this.unparsed |= item.unparsed; + } + return this; + } + + public TopologyMapWidgetDefinitionServiceMap addCustomLinksItem( + WidgetCustomLink customLinksItem) { + if (this.customLinks == null) { + this.customLinks = new ArrayList<>(); + } + this.customLinks.add(customLinksItem); + this.unparsed |= customLinksItem.unparsed; + return this; + } + + /** + * List of custom links. + * + * @return customLinks + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CUSTOM_LINKS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getCustomLinks() { + return customLinks; + } + + public void setCustomLinks(List customLinks) { + this.customLinks = customLinks; + } + + public TopologyMapWidgetDefinitionServiceMap description(String description) { + this.description = description; + return this; + } + + /** + * The description of the widget. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public TopologyMapWidgetDefinitionServiceMap requests(List requests) { + this.requests = requests; + for (TopologyRequestServiceMap item : requests) { + this.unparsed |= item.unparsed; + } + return this; + } + + public TopologyMapWidgetDefinitionServiceMap addRequestsItem( + TopologyRequestServiceMap requestsItem) { + this.requests.add(requestsItem); + this.unparsed |= requestsItem.unparsed; + return this; + } + + /** + * One Topology request. + * + * @return requests + */ + @JsonProperty(JSON_PROPERTY_REQUESTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getRequests() { + return requests; + } + + public void setRequests(List requests) { + this.requests = requests; + } + + public TopologyMapWidgetDefinitionServiceMap time(WidgetTime time) { + this.time = time; + this.unparsed |= time.unparsed; + return this; + } + + /** + * Time setting for the widget. + * + * @return time + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetTime getTime() { + return time; + } + + public void setTime(WidgetTime time) { + this.time = time; + } + + public TopologyMapWidgetDefinitionServiceMap title(String title) { + this.title = title; + return this; + } + + /** + * Title of your widget. + * + * @return title + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public TopologyMapWidgetDefinitionServiceMap titleAlign(WidgetTextAlign titleAlign) { + this.titleAlign = titleAlign; + this.unparsed |= !titleAlign.isValid(); + return this; + } + + /** + * How to align the text on the widget. + * + * @return titleAlign + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE_ALIGN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WidgetTextAlign getTitleAlign() { + return titleAlign; + } + + public void setTitleAlign(WidgetTextAlign titleAlign) { + if (!titleAlign.isValid()) { + this.unparsed = true; + } + this.titleAlign = titleAlign; + } + + public TopologyMapWidgetDefinitionServiceMap titleSize(String titleSize) { + this.titleSize = titleSize; + return this; + } + + /** + * Size of the title. + * + * @return titleSize + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE_SIZE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitleSize() { + return titleSize; + } + + public void setTitleSize(String titleSize) { + this.titleSize = titleSize; + } + + public TopologyMapWidgetDefinitionServiceMap type(TopologyMapWidgetDefinitionType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * Type of the topology map widget. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TopologyMapWidgetDefinitionType getType() { + return type; + } + + public void setType(TopologyMapWidgetDefinitionType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** Return true if this TopologyMapWidgetDefinitionServiceMap object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TopologyMapWidgetDefinitionServiceMap topologyMapWidgetDefinitionServiceMap = + (TopologyMapWidgetDefinitionServiceMap) o; + return Objects.equals(this.customLinks, topologyMapWidgetDefinitionServiceMap.customLinks) + && Objects.equals(this.description, topologyMapWidgetDefinitionServiceMap.description) + && Objects.equals(this.requests, topologyMapWidgetDefinitionServiceMap.requests) + && Objects.equals(this.time, topologyMapWidgetDefinitionServiceMap.time) + && Objects.equals(this.title, topologyMapWidgetDefinitionServiceMap.title) + && Objects.equals(this.titleAlign, topologyMapWidgetDefinitionServiceMap.titleAlign) + && Objects.equals(this.titleSize, topologyMapWidgetDefinitionServiceMap.titleSize) + && Objects.equals(this.type, topologyMapWidgetDefinitionServiceMap.type); + } + + @Override + public int hashCode() { + return Objects.hash( + customLinks, description, requests, time, title, titleAlign, titleSize, type); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TopologyMapWidgetDefinitionServiceMap {\n"); + sb.append(" customLinks: ").append(toIndentedString(customLinks)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" requests: ").append(toIndentedString(requests)).append("\n"); + sb.append(" time: ").append(toIndentedString(time)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + sb.append(" titleAlign: ").append(toIndentedString(titleAlign)).append("\n"); + sb.append(" titleSize: ").append(toIndentedString(titleSize)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append('}'); + 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/TopologyQueryDataStreams.java b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryDataStreams.java new file mode 100644 index 00000000000..f421fa8285a --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryDataStreams.java @@ -0,0 +1,187 @@ +/* + * 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.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.List; +import java.util.Objects; + +/** Query to the data streams topology data source. */ +@JsonPropertyOrder({ + TopologyQueryDataStreams.JSON_PROPERTY_DATA_SOURCE, + TopologyQueryDataStreams.JSON_PROPERTY_FILTERS, + TopologyQueryDataStreams.JSON_PROPERTY_QUERY_STRING, + TopologyQueryDataStreams.JSON_PROPERTY_SERVICE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TopologyQueryDataStreams { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA_SOURCE = "data_source"; + private TopologyQueryDataStreamsDataSource dataSource; + + public static final String JSON_PROPERTY_FILTERS = "filters"; + private List filters = new ArrayList<>(); + + public static final String JSON_PROPERTY_QUERY_STRING = "query_string"; + private String queryString; + + public static final String JSON_PROPERTY_SERVICE = "service"; + private String service; + + public TopologyQueryDataStreams() {} + + @JsonCreator + public TopologyQueryDataStreams( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA_SOURCE) + TopologyQueryDataStreamsDataSource dataSource, + @JsonProperty(required = true, value = JSON_PROPERTY_FILTERS) List filters, + @JsonProperty(required = true, value = JSON_PROPERTY_SERVICE) String service) { + this.dataSource = dataSource; + this.unparsed |= !dataSource.isValid(); + this.filters = filters; + this.service = service; + } + + public TopologyQueryDataStreams dataSource(TopologyQueryDataStreamsDataSource dataSource) { + this.dataSource = dataSource; + this.unparsed |= !dataSource.isValid(); + return this; + } + + /** + * Name of the data source. + * + * @return dataSource + */ + @JsonProperty(JSON_PROPERTY_DATA_SOURCE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TopologyQueryDataStreamsDataSource getDataSource() { + return dataSource; + } + + public void setDataSource(TopologyQueryDataStreamsDataSource dataSource) { + if (!dataSource.isValid()) { + this.unparsed = true; + } + this.dataSource = dataSource; + } + + public TopologyQueryDataStreams filters(List filters) { + this.filters = filters; + return this; + } + + public TopologyQueryDataStreams addFiltersItem(String filtersItem) { + this.filters.add(filtersItem); + return this; + } + + /** + * Your environment and primary tag (or * if enabled for your account). + * + * @return filters + */ + @JsonProperty(JSON_PROPERTY_FILTERS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getFilters() { + return filters; + } + + public void setFilters(List filters) { + this.filters = filters; + } + + public TopologyQueryDataStreams queryString(String queryString) { + this.queryString = queryString; + return this; + } + + /** + * A search string for filtering services. When set, this replaces the service field. + * + * @return queryString + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_QUERY_STRING) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getQueryString() { + return queryString; + } + + public void setQueryString(String queryString) { + this.queryString = queryString; + } + + public TopologyQueryDataStreams service(String service) { + this.service = service; + return this; + } + + /** + * (deprecated) Name of the service. Leave this empty and use query_string instead. + * + * @return service + */ + @JsonProperty(JSON_PROPERTY_SERVICE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + /** Return true if this TopologyQueryDataStreams object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TopologyQueryDataStreams topologyQueryDataStreams = (TopologyQueryDataStreams) o; + return Objects.equals(this.dataSource, topologyQueryDataStreams.dataSource) + && Objects.equals(this.filters, topologyQueryDataStreams.filters) + && Objects.equals(this.queryString, topologyQueryDataStreams.queryString) + && Objects.equals(this.service, topologyQueryDataStreams.service); + } + + @Override + public int hashCode() { + return Objects.hash(dataSource, filters, queryString, service); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TopologyQueryDataStreams {\n"); + sb.append(" dataSource: ").append(toIndentedString(dataSource)).append("\n"); + sb.append(" filters: ").append(toIndentedString(filters)).append("\n"); + sb.append(" queryString: ").append(toIndentedString(queryString)).append("\n"); + sb.append(" service: ").append(toIndentedString(service)).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/TopologyQueryDataStreamsDataSource.java b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryDataStreamsDataSource.java new file mode 100644 index 00000000000..0a692d70a84 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryDataStreamsDataSource.java @@ -0,0 +1,59 @@ +/* + * 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; + +/** Name of the data source. */ +@JsonSerialize( + using = TopologyQueryDataStreamsDataSource.TopologyQueryDataStreamsDataSourceSerializer.class) +public class TopologyQueryDataStreamsDataSource extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("data_streams")); + + public static final TopologyQueryDataStreamsDataSource DATA_STREAMS = + new TopologyQueryDataStreamsDataSource("data_streams"); + + TopologyQueryDataStreamsDataSource(String value) { + super(value, allowedValues); + } + + public static class TopologyQueryDataStreamsDataSourceSerializer + extends StdSerializer { + public TopologyQueryDataStreamsDataSourceSerializer( + Class t) { + super(t); + } + + public TopologyQueryDataStreamsDataSourceSerializer() { + this(null); + } + + @Override + public void serialize( + TopologyQueryDataStreamsDataSource value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static TopologyQueryDataStreamsDataSource fromValue(String value) { + return new TopologyQueryDataStreamsDataSource(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v1/model/TopologyQueryServiceMap.java b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryServiceMap.java new file mode 100644 index 00000000000..efa0c2d3cb7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryServiceMap.java @@ -0,0 +1,187 @@ +/* + * 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.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.List; +import java.util.Objects; + +/** Query to the service map topology data source. */ +@JsonPropertyOrder({ + TopologyQueryServiceMap.JSON_PROPERTY_DATA_SOURCE, + TopologyQueryServiceMap.JSON_PROPERTY_FILTERS, + TopologyQueryServiceMap.JSON_PROPERTY_QUERY_STRING, + TopologyQueryServiceMap.JSON_PROPERTY_SERVICE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TopologyQueryServiceMap { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA_SOURCE = "data_source"; + private TopologyQueryServiceMapDataSource dataSource; + + public static final String JSON_PROPERTY_FILTERS = "filters"; + private List filters = new ArrayList<>(); + + public static final String JSON_PROPERTY_QUERY_STRING = "query_string"; + private String queryString; + + public static final String JSON_PROPERTY_SERVICE = "service"; + private String service; + + public TopologyQueryServiceMap() {} + + @JsonCreator + public TopologyQueryServiceMap( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA_SOURCE) + TopologyQueryServiceMapDataSource dataSource, + @JsonProperty(required = true, value = JSON_PROPERTY_FILTERS) List filters, + @JsonProperty(required = true, value = JSON_PROPERTY_SERVICE) String service) { + this.dataSource = dataSource; + this.unparsed |= !dataSource.isValid(); + this.filters = filters; + this.service = service; + } + + public TopologyQueryServiceMap dataSource(TopologyQueryServiceMapDataSource dataSource) { + this.dataSource = dataSource; + this.unparsed |= !dataSource.isValid(); + return this; + } + + /** + * Name of the data source. + * + * @return dataSource + */ + @JsonProperty(JSON_PROPERTY_DATA_SOURCE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TopologyQueryServiceMapDataSource getDataSource() { + return dataSource; + } + + public void setDataSource(TopologyQueryServiceMapDataSource dataSource) { + if (!dataSource.isValid()) { + this.unparsed = true; + } + this.dataSource = dataSource; + } + + public TopologyQueryServiceMap filters(List filters) { + this.filters = filters; + return this; + } + + public TopologyQueryServiceMap addFiltersItem(String filtersItem) { + this.filters.add(filtersItem); + return this; + } + + /** + * Your environment and primary tag (or * if enabled for your account). + * + * @return filters + */ + @JsonProperty(JSON_PROPERTY_FILTERS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getFilters() { + return filters; + } + + public void setFilters(List filters) { + this.filters = filters; + } + + public TopologyQueryServiceMap queryString(String queryString) { + this.queryString = queryString; + return this; + } + + /** + * A search string for filtering services. When set, this replaces the service field. + * + * @return queryString + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_QUERY_STRING) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getQueryString() { + return queryString; + } + + public void setQueryString(String queryString) { + this.queryString = queryString; + } + + public TopologyQueryServiceMap service(String service) { + this.service = service; + return this; + } + + /** + * (deprecated) Name of the service. Leave this empty and use query_string instead. + * + * @return service + */ + @JsonProperty(JSON_PROPERTY_SERVICE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + /** Return true if this TopologyQueryServiceMap object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TopologyQueryServiceMap topologyQueryServiceMap = (TopologyQueryServiceMap) o; + return Objects.equals(this.dataSource, topologyQueryServiceMap.dataSource) + && Objects.equals(this.filters, topologyQueryServiceMap.filters) + && Objects.equals(this.queryString, topologyQueryServiceMap.queryString) + && Objects.equals(this.service, topologyQueryServiceMap.service); + } + + @Override + public int hashCode() { + return Objects.hash(dataSource, filters, queryString, service); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TopologyQueryServiceMap {\n"); + sb.append(" dataSource: ").append(toIndentedString(dataSource)).append("\n"); + sb.append(" filters: ").append(toIndentedString(filters)).append("\n"); + sb.append(" queryString: ").append(toIndentedString(queryString)).append("\n"); + sb.append(" service: ").append(toIndentedString(service)).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/TopologyQueryDataSource.java b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryServiceMapDataSource.java similarity index 52% rename from src/main/java/com/datadog/api/client/v1/model/TopologyQueryDataSource.java rename to src/main/java/com/datadog/api/client/v1/model/TopologyQueryServiceMapDataSource.java index d7796b96ad1..2e3fb342ab5 100644 --- a/src/main/java/com/datadog/api/client/v1/model/TopologyQueryDataSource.java +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyQueryServiceMapDataSource.java @@ -18,42 +18,41 @@ import java.util.HashSet; import java.util.Set; -/** Name of the data source */ -@JsonSerialize(using = TopologyQueryDataSource.TopologyQueryDataSourceSerializer.class) -public class TopologyQueryDataSource extends ModelEnum { +/** Name of the data source. */ +@JsonSerialize( + using = TopologyQueryServiceMapDataSource.TopologyQueryServiceMapDataSourceSerializer.class) +public class TopologyQueryServiceMapDataSource extends ModelEnum { private static final Set allowedValues = - new HashSet(Arrays.asList("data_streams", "service_map")); + new HashSet(Arrays.asList("service_map")); - public static final TopologyQueryDataSource DATA_STREAMS = - new TopologyQueryDataSource("data_streams"); - public static final TopologyQueryDataSource SERVICE_MAP = - new TopologyQueryDataSource("service_map"); + public static final TopologyQueryServiceMapDataSource SERVICE_MAP = + new TopologyQueryServiceMapDataSource("service_map"); - TopologyQueryDataSource(String value) { + TopologyQueryServiceMapDataSource(String value) { super(value, allowedValues); } - public static class TopologyQueryDataSourceSerializer - extends StdSerializer { - public TopologyQueryDataSourceSerializer(Class t) { + public static class TopologyQueryServiceMapDataSourceSerializer + extends StdSerializer { + public TopologyQueryServiceMapDataSourceSerializer(Class t) { super(t); } - public TopologyQueryDataSourceSerializer() { + public TopologyQueryServiceMapDataSourceSerializer() { this(null); } @Override public void serialize( - TopologyQueryDataSource value, JsonGenerator jgen, SerializerProvider provider) + TopologyQueryServiceMapDataSource value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeObject(value.value); } } @JsonCreator - public static TopologyQueryDataSource fromValue(String value) { - return new TopologyQueryDataSource(value); + public static TopologyQueryServiceMapDataSource fromValue(String value) { + return new TopologyQueryServiceMapDataSource(value); } } diff --git a/src/main/java/com/datadog/api/client/v1/model/TopologyQuery.java b/src/main/java/com/datadog/api/client/v1/model/TopologyRequestDataStreams.java similarity index 52% rename from src/main/java/com/datadog/api/client/v1/model/TopologyQuery.java rename to src/main/java/com/datadog/api/client/v1/model/TopologyRequestDataStreams.java index 4b11e56e641..570bb8cb07e 100644 --- a/src/main/java/com/datadog/api/client/v1/model/TopologyQuery.java +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyRequestDataStreams.java @@ -12,104 +12,70 @@ 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; -/** Query to service-based topology data sources like the service map or data streams. */ +/** Request that returns nodes and edges from the data streams data source. */ @JsonPropertyOrder({ - TopologyQuery.JSON_PROPERTY_DATA_SOURCE, - TopologyQuery.JSON_PROPERTY_FILTERS, - TopologyQuery.JSON_PROPERTY_SERVICE + TopologyRequestDataStreams.JSON_PROPERTY_QUERY, + TopologyRequestDataStreams.JSON_PROPERTY_REQUEST_TYPE }) @jakarta.annotation.Generated( value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") -public class TopologyQuery { +public class TopologyRequestDataStreams { @JsonIgnore public boolean unparsed = false; - public static final String JSON_PROPERTY_DATA_SOURCE = "data_source"; - private TopologyQueryDataSource dataSource; + public static final String JSON_PROPERTY_QUERY = "query"; + private TopologyQueryDataStreams query; - public static final String JSON_PROPERTY_FILTERS = "filters"; - private List filters = null; + public static final String JSON_PROPERTY_REQUEST_TYPE = "request_type"; + private TopologyRequestType requestType; - public static final String JSON_PROPERTY_SERVICE = "service"; - private String service; - - public TopologyQuery dataSource(TopologyQueryDataSource dataSource) { - this.dataSource = dataSource; - this.unparsed |= !dataSource.isValid(); + public TopologyRequestDataStreams query(TopologyQueryDataStreams query) { + this.query = query; + this.unparsed |= query.unparsed; return this; } /** - * Name of the data source + * Query to the data streams topology data source. * - * @return dataSource + * @return query */ @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_DATA_SOURCE) + @JsonProperty(JSON_PROPERTY_QUERY) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TopologyQueryDataSource getDataSource() { - return dataSource; + public TopologyQueryDataStreams getQuery() { + return query; } - public void setDataSource(TopologyQueryDataSource dataSource) { - if (!dataSource.isValid()) { - this.unparsed = true; - } - this.dataSource = dataSource; + public void setQuery(TopologyQueryDataStreams query) { + this.query = query; } - public TopologyQuery filters(List filters) { - this.filters = filters; - return this; - } - - public TopologyQuery addFiltersItem(String filtersItem) { - if (this.filters == null) { - this.filters = new ArrayList<>(); - } - this.filters.add(filtersItem); + public TopologyRequestDataStreams requestType(TopologyRequestType requestType) { + this.requestType = requestType; + this.unparsed |= !requestType.isValid(); return this; } /** - * Your environment and primary tag (or * if enabled for your account). + * Widget request type. * - * @return filters + * @return requestType */ @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_FILTERS) + @JsonProperty(JSON_PROPERTY_REQUEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public List getFilters() { - return filters; - } - - public void setFilters(List filters) { - this.filters = filters; + public TopologyRequestType getRequestType() { + return requestType; } - public TopologyQuery service(String service) { - this.service = service; - return this; - } - - /** - * Name of the service - * - * @return service - */ - @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_SERVICE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getService() { - return service; - } - - public void setService(String service) { - this.service = service; + public void setRequestType(TopologyRequestType requestType) { + if (!requestType.isValid()) { + this.unparsed = true; + } + this.requestType = requestType; } /** @@ -124,10 +90,10 @@ public void setService(String service) { * * @param key The arbitrary key to set * @param value The associated value - * @return TopologyQuery + * @return TopologyRequestDataStreams */ @JsonAnySetter - public TopologyQuery putAdditionalProperty(String key, Object value) { + public TopologyRequestDataStreams putAdditionalProperty(String key, Object value) { if (this.additionalProperties == null) { this.additionalProperties = new HashMap(); } @@ -158,7 +124,7 @@ public Object getAdditionalProperty(String key) { return this.additionalProperties.get(key); } - /** Return true if this TopologyQuery object is equal to o. */ + /** Return true if this TopologyRequestDataStreams object is equal to o. */ @Override public boolean equals(Object o) { if (this == o) { @@ -167,25 +133,24 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - TopologyQuery topologyQuery = (TopologyQuery) o; - return Objects.equals(this.dataSource, topologyQuery.dataSource) - && Objects.equals(this.filters, topologyQuery.filters) - && Objects.equals(this.service, topologyQuery.service) - && Objects.equals(this.additionalProperties, topologyQuery.additionalProperties); + TopologyRequestDataStreams topologyRequestDataStreams = (TopologyRequestDataStreams) o; + return Objects.equals(this.query, topologyRequestDataStreams.query) + && Objects.equals(this.requestType, topologyRequestDataStreams.requestType) + && Objects.equals( + this.additionalProperties, topologyRequestDataStreams.additionalProperties); } @Override public int hashCode() { - return Objects.hash(dataSource, filters, service, additionalProperties); + return Objects.hash(query, requestType, additionalProperties); } @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class TopologyQuery {\n"); - sb.append(" dataSource: ").append(toIndentedString(dataSource)).append("\n"); - sb.append(" filters: ").append(toIndentedString(filters)).append("\n"); - sb.append(" service: ").append(toIndentedString(service)).append("\n"); + sb.append("class TopologyRequestDataStreams {\n"); + sb.append(" query: ").append(toIndentedString(query)).append("\n"); + sb.append(" requestType: ").append(toIndentedString(requestType)).append("\n"); sb.append(" additionalProperties: ") .append(toIndentedString(additionalProperties)) .append("\n"); diff --git a/src/main/java/com/datadog/api/client/v1/model/TopologyRequest.java b/src/main/java/com/datadog/api/client/v1/model/TopologyRequestServiceMap.java similarity index 77% rename from src/main/java/com/datadog/api/client/v1/model/TopologyRequest.java rename to src/main/java/com/datadog/api/client/v1/model/TopologyRequestServiceMap.java index 0c4a9ce92bd..0970a113803 100644 --- a/src/main/java/com/datadog/api/client/v1/model/TopologyRequest.java +++ b/src/main/java/com/datadog/api/client/v1/model/TopologyRequestServiceMap.java @@ -16,44 +16,44 @@ import java.util.Map; import java.util.Objects; -/** Request that will return nodes and edges to be used by topology map. */ +/** Request that returns nodes and edges from the service map data source. */ @JsonPropertyOrder({ - TopologyRequest.JSON_PROPERTY_QUERY, - TopologyRequest.JSON_PROPERTY_REQUEST_TYPE + TopologyRequestServiceMap.JSON_PROPERTY_QUERY, + TopologyRequestServiceMap.JSON_PROPERTY_REQUEST_TYPE }) @jakarta.annotation.Generated( value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") -public class TopologyRequest { +public class TopologyRequestServiceMap { @JsonIgnore public boolean unparsed = false; public static final String JSON_PROPERTY_QUERY = "query"; - private TopologyQuery query; + private TopologyQueryServiceMap query; public static final String JSON_PROPERTY_REQUEST_TYPE = "request_type"; private TopologyRequestType requestType; - public TopologyRequest query(TopologyQuery query) { + public TopologyRequestServiceMap query(TopologyQueryServiceMap query) { this.query = query; this.unparsed |= query.unparsed; return this; } /** - * Query to service-based topology data sources like the service map or data streams. + * Query to the service map topology data source. * * @return query */ @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_QUERY) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TopologyQuery getQuery() { + public TopologyQueryServiceMap getQuery() { return query; } - public void setQuery(TopologyQuery query) { + public void setQuery(TopologyQueryServiceMap query) { this.query = query; } - public TopologyRequest requestType(TopologyRequestType requestType) { + public TopologyRequestServiceMap requestType(TopologyRequestType requestType) { this.requestType = requestType; this.unparsed |= !requestType.isValid(); return this; @@ -90,10 +90,10 @@ public void setRequestType(TopologyRequestType requestType) { * * @param key The arbitrary key to set * @param value The associated value - * @return TopologyRequest + * @return TopologyRequestServiceMap */ @JsonAnySetter - public TopologyRequest putAdditionalProperty(String key, Object value) { + public TopologyRequestServiceMap putAdditionalProperty(String key, Object value) { if (this.additionalProperties == null) { this.additionalProperties = new HashMap(); } @@ -124,7 +124,7 @@ public Object getAdditionalProperty(String key) { return this.additionalProperties.get(key); } - /** Return true if this TopologyRequest object is equal to o. */ + /** Return true if this TopologyRequestServiceMap object is equal to o. */ @Override public boolean equals(Object o) { if (this == o) { @@ -133,10 +133,11 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - TopologyRequest topologyRequest = (TopologyRequest) o; - return Objects.equals(this.query, topologyRequest.query) - && Objects.equals(this.requestType, topologyRequest.requestType) - && Objects.equals(this.additionalProperties, topologyRequest.additionalProperties); + TopologyRequestServiceMap topologyRequestServiceMap = (TopologyRequestServiceMap) o; + return Objects.equals(this.query, topologyRequestServiceMap.query) + && Objects.equals(this.requestType, topologyRequestServiceMap.requestType) + && Objects.equals( + this.additionalProperties, topologyRequestServiceMap.additionalProperties); } @Override @@ -147,7 +148,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class TopologyRequest {\n"); + sb.append("class TopologyRequestServiceMap {\n"); sb.append(" query: ").append(toIndentedString(query)).append("\n"); sb.append(" requestType: ").append(toIndentedString(requestType)).append("\n"); sb.append(" additionalProperties: ") diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_topology_map_data_streams_widget.freeze b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_topology_map_data_streams_widget.freeze new file mode 100644 index 00000000000..21a59912fa3 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_topology_map_data_streams_widget.freeze @@ -0,0 +1 @@ +2026-03-20T18:16:51.929Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_topology_map_data_streams_widget.json b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_topology_map_data_streams_widget.json new file mode 100644 index 00000000000..59814bdb0e4 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Create_a_new_dashboard_with_topology_map_data_streams_widget.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"description\":\"\",\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_topology_map_data_streams_widget-1774030611\",\"widgets\":[{\"definition\":{\"requests\":[{\"query\":{\"data_source\":\"data_streams\",\"filters\":[\"env:prod\"],\"query_string\":\"service:myservice\",\"service\":\"\"},\"request_type\":\"topology\"}],\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"topology_map\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}}]}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/dashboard", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"id\":\"whr-253-7we\",\"title\":\"Test-Create_a_new_dashboard_with_topology_map_data_streams_widget-1774030611\",\"description\":\"\",\"author_handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"author_name\":\"CI Account\",\"layout_type\":\"free\",\"url\":\"/dashboard/whr-253-7we/test-createanewdashboardwithtopologymapdatastreamswidget-1774030611\",\"template_variables\":[],\"widgets\":[{\"definition\":{\"requests\":[{\"query\":{\"data_source\":\"data_streams\",\"filters\":[\"env:prod\"],\"query_string\":\"service:myservice\",\"service\":\"\"},\"request_type\":\"topology\"}],\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"topology_map\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":1843670487553482}],\"notify_list\":[],\"created_at\":\"2026-03-20T18:16:52.209473+00:00\",\"modified_at\":\"2026-03-20T18:16:52.209473+00:00\",\"restricted_roles\":[]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "5ef852d7-c1bc-cb27-9d3a-40ee81b48bd4" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v1/dashboard/whr-253-7we", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"deleted_dashboard_id\":\"whr-253-7we\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "33d0dcbd-89c8-bfed-9729-3770bde62baa" + } +] \ 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 28e57ec5e2a..984a718679b 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 @@ -1128,6 +1128,19 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "formula" And the response "widgets[0].definition.requests[0].sort.order_by[0].index" is equal to 0 + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with topology_map data_streams widget + Given new "CreateDashboard" request + And body from file "dashboards_json_payload/topology_map_widget_data_streams.json" + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.type" is equal to "topology_map" + And the response "widgets[0].definition.requests[0].request_type" is equal to "topology" + And the response "widgets[0].definition.requests[0].query.data_source" is equal to "data_streams" + And the response "widgets[0].definition.requests[0].query.service" is equal to "" + And the response "widgets[0].definition.requests[0].query.filters" is equal to ["env:prod"] + And the response "widgets[0].definition.requests[0].query.query_string" is equal to "service:myservice" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with topology_map widget Given new "CreateDashboard" request diff --git a/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/topology_map_widget_data_streams.json b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/topology_map_widget_data_streams.json new file mode 100644 index 00000000000..f454b974e6b --- /dev/null +++ b/src/test/resources/com/datadog/api/client/v1/api/dashboards_json_payload/topology_map_widget_data_streams.json @@ -0,0 +1,34 @@ +{ + "title": "{{ unique }}", + "description": "", + "widgets": [ + { + "layout": { + "x": 0, + "y": 0, + "width": 47, + "height": 15 + }, + "definition": { + "title": "", + "title_size": "16", + "title_align": "left", + "type": "topology_map", + "requests": [ + { + "request_type": "topology", + "query": { + "data_source": "data_streams", + "service": "", + "filters": ["env:prod"], + "query_string": "service:myservice" + } + } + ] + } + } + ], + "template_variables": [], + "layout_type": "free", + "notify_list": [] +}