diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index ac098a3c305..557b7d531d1 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -51969,6 +51969,118 @@ components:
type: string
x-enum-varnames:
- ADD_HOSTNAME
+ ObservabilityPipelineAddMetricTagsProcessor:
+ description: |-
+ The `add_metric_tags` processor adds static tags to metrics.
+
+ **Supported pipeline types:** metrics
+ properties:
+ display_name:
+ $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName"
+ enabled:
+ description: Indicates whether the processor is enabled.
+ example: true
+ type: boolean
+ id:
+ description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components).
+ example: "add-metric-tags-processor"
+ type: string
+ include:
+ description: A Datadog search query used to determine which metrics this processor targets.
+ example: "*"
+ type: string
+ tags:
+ description: A list of static tags (key-value pairs) added to each metric processed by this component.
+ items:
+ $ref: "#/components/schemas/ObservabilityPipelineFieldValue"
+ maxItems: 15
+ type: array
+ type:
+ $ref: "#/components/schemas/ObservabilityPipelineAddMetricTagsProcessorType"
+ required:
+ - id
+ - type
+ - include
+ - tags
+ - enabled
+ type: object
+ x-pipeline-types: [metrics]
+ ObservabilityPipelineAddMetricTagsProcessorType:
+ default: add_metric_tags
+ description: The processor type. The value must be `add_metric_tags`.
+ enum: [add_metric_tags]
+ example: add_metric_tags
+ type: string
+ x-enum-varnames:
+ - ADD_METRIC_TAGS
+ ObservabilityPipelineAggregateProcessor:
+ description: |-
+ The `aggregate` processor combines metrics that share the same name and tags into a single metric over a configurable interval.
+
+ **Supported pipeline types:** metrics
+ properties:
+ display_name:
+ $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName"
+ enabled:
+ description: Indicates whether the processor is enabled.
+ example: true
+ type: boolean
+ id:
+ description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components).
+ example: "aggregate-processor"
+ type: string
+ include:
+ description: A Datadog search query used to determine which metrics this processor targets.
+ example: "*"
+ type: string
+ interval_secs:
+ description: The interval, in seconds, over which metrics are aggregated.
+ example: 10
+ format: int64
+ maximum: 60
+ minimum: 1
+ type: integer
+ mode:
+ $ref: "#/components/schemas/ObservabilityPipelineAggregateProcessorMode"
+ type:
+ $ref: "#/components/schemas/ObservabilityPipelineAggregateProcessorType"
+ required:
+ - id
+ - type
+ - include
+ - interval_secs
+ - mode
+ - enabled
+ type: object
+ x-pipeline-types: [metrics]
+ ObservabilityPipelineAggregateProcessorMode:
+ description: The aggregation mode applied to metrics that share the same name and tags within the interval.
+ enum:
+ - auto
+ - sum
+ - latest
+ - count
+ - max
+ - min
+ - mean
+ example: auto
+ type: string
+ x-enum-varnames:
+ - AUTO
+ - SUM
+ - LATEST
+ - COUNT
+ - MAX
+ - MIN
+ - MEAN
+ ObservabilityPipelineAggregateProcessorType:
+ default: aggregate
+ description: The processor type. The value must be `aggregate`.
+ enum: [aggregate]
+ example: aggregate
+ type: string
+ x-enum-varnames:
+ - AGGREGATE
ObservabilityPipelineAmazonDataFirehoseSource:
description: |-
The `amazon_data_firehose` source ingests logs from AWS Data Firehose.
@@ -52680,7 +52792,11 @@ components:
- $ref: "#/components/schemas/ObservabilityPipelineSensitiveDataScannerProcessor"
- $ref: "#/components/schemas/ObservabilityPipelineSplitArrayProcessor"
- $ref: "#/components/schemas/ObservabilityPipelineThrottleProcessor"
+ - $ref: "#/components/schemas/ObservabilityPipelineAddMetricTagsProcessor"
+ - $ref: "#/components/schemas/ObservabilityPipelineAggregateProcessor"
- $ref: "#/components/schemas/ObservabilityPipelineMetricTagsProcessor"
+ - $ref: "#/components/schemas/ObservabilityPipelineRenameMetricTagsProcessor"
+ - $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessor"
ObservabilityPipelineConfigSourceItem:
description: "A data source for the pipeline."
oneOf:
@@ -55642,6 +55758,65 @@ components:
type: string
x-enum-varnames:
- RENAME_FIELDS
+ ObservabilityPipelineRenameMetricTagsProcessor:
+ description: |-
+ The `rename_metric_tags` processor changes the keys of tags on metrics.
+
+ **Supported pipeline types:** metrics
+ properties:
+ display_name:
+ $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName"
+ enabled:
+ description: Indicates whether the processor is enabled.
+ example: true
+ type: boolean
+ id:
+ description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components).
+ example: "rename-metric-tags-processor"
+ type: string
+ include:
+ description: A Datadog search query used to determine which metrics this processor targets.
+ example: "*"
+ type: string
+ tags:
+ description: A list of rename rules specifying which tag keys to rename on each metric.
+ items:
+ $ref: "#/components/schemas/ObservabilityPipelineRenameMetricTagsProcessorTag"
+ maxItems: 15
+ type: array
+ type:
+ $ref: "#/components/schemas/ObservabilityPipelineRenameMetricTagsProcessorType"
+ required:
+ - id
+ - type
+ - include
+ - tags
+ - enabled
+ type: object
+ x-pipeline-types: [metrics]
+ ObservabilityPipelineRenameMetricTagsProcessorTag:
+ description: Defines how to rename a tag on metric events.
+ properties:
+ rename_to:
+ description: The new tag key to assign in place of the original.
+ example: "destination_tag"
+ type: string
+ tag:
+ description: The original tag key on the metric event.
+ example: "source_tag"
+ type: string
+ required:
+ - tag
+ - rename_to
+ type: object
+ ObservabilityPipelineRenameMetricTagsProcessorType:
+ default: rename_metric_tags
+ description: The processor type. The value must be `rename_metric_tags`.
+ enum: [rename_metric_tags]
+ example: rename_metric_tags
+ type: string
+ x-enum-varnames:
+ - RENAME_METRIC_TAGS
ObservabilityPipelineRsyslogDestination:
description: |-
The `rsyslog` destination forwards logs to an external `rsyslog` server over TCP or UDP using the syslog protocol.
@@ -56833,6 +57008,141 @@ components:
x-enum-varnames:
- TCP
- UDP
+ ObservabilityPipelineTagCardinalityLimitProcessor:
+ description: |-
+ The `tag_cardinality_limit` processor caps the number of distinct tag value combinations on metrics, dropping tags or events once the limit is exceeded.
+
+ **Supported pipeline types:** metrics
+ properties:
+ display_name:
+ $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName"
+ enabled:
+ description: Indicates whether the processor is enabled.
+ example: true
+ type: boolean
+ id:
+ description: The unique identifier for this component. Used in other parts of the pipeline to reference this component (for example, as the `input` to downstream components).
+ example: "tag-cardinality-limit-processor"
+ type: string
+ include:
+ description: A Datadog search query used to determine which metrics this processor targets.
+ example: "*"
+ type: string
+ limit_exceeded_action:
+ $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorAction"
+ per_metric_limits:
+ description: A list of per-metric cardinality overrides that take precedence over the default `value_limit`.
+ items:
+ $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit"
+ maxItems: 100
+ type: array
+ type:
+ $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorType"
+ value_limit:
+ description: The default maximum number of distinct tag value combinations allowed per metric.
+ example: 10000
+ format: int64
+ maximum: 1000000
+ minimum: 0
+ type: integer
+ required:
+ - id
+ - type
+ - include
+ - limit_exceeded_action
+ - value_limit
+ - enabled
+ type: object
+ x-pipeline-types: [metrics]
+ ObservabilityPipelineTagCardinalityLimitProcessorAction:
+ description: The action to take when the cardinality limit is exceeded.
+ enum:
+ - drop_tag
+ - drop_event
+ example: drop_tag
+ type: string
+ x-enum-varnames:
+ - DROP_TAG
+ - DROP_EVENT
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit:
+ description: A cardinality override applied to a specific metric.
+ properties:
+ limit_exceeded_action:
+ $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorAction"
+ metric_name:
+ description: The name of the metric this override applies to.
+ example: "system.cpu.user"
+ type: string
+ mode:
+ $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode"
+ per_tag_limits:
+ description: A list of per-tag cardinality overrides that apply within this metric.
+ items:
+ $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit"
+ maxItems: 50
+ type: array
+ value_limit:
+ description: The maximum number of distinct tag value combinations allowed for this metric.
+ example: 10000
+ format: int64
+ maximum: 1000000
+ minimum: 0
+ type: integer
+ required:
+ - metric_name
+ - mode
+ - limit_exceeded_action
+ - value_limit
+ type: object
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode:
+ description: How the per-metric override is applied. `tracked` enforces a custom limit; `excluded` skips the metric entirely.
+ enum:
+ - tracked
+ - excluded
+ example: tracked
+ type: string
+ x-enum-varnames:
+ - TRACKED
+ - EXCLUDED
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit:
+ description: A cardinality override for a specific tag key within a per-metric limit.
+ properties:
+ mode:
+ $ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode"
+ tag_key:
+ description: The tag key this override applies to.
+ example: "host"
+ type: string
+ value_limit:
+ description: The maximum number of distinct values allowed for this tag.
+ example: 5000
+ format: int64
+ maximum: 1000000
+ minimum: 0
+ type: integer
+ required:
+ - tag_key
+ - mode
+ - value_limit
+ type: object
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode:
+ description: How the per-tag override is applied. `limit_override` enforces a custom limit on the tag; `excluded` skips the tag from cardinality tracking.
+ enum:
+ - limit_override
+ - excluded
+ example: limit_override
+ type: string
+ x-enum-varnames:
+ - LIMIT_OVERRIDE
+ - EXCLUDED
+ ObservabilityPipelineTagCardinalityLimitProcessorType:
+ default: tag_cardinality_limit
+ description: The processor type. The value must be `tag_cardinality_limit`.
+ enum: [tag_cardinality_limit]
+ example: tag_cardinality_limit
+ type: string
+ x-enum-varnames:
+ - TAG_CARDINALITY_LIMIT
ObservabilityPipelineThrottleProcessor:
description: |-
The `throttle` processor limits the number of events that pass through over a given time window.
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessor.java
new file mode 100644
index 00000000000..7a24e370696
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessor.java
@@ -0,0 +1,315 @@
+/*
+ * 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.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * The add_metric_tags processor adds static tags to metrics.
+ *
+ *
Supported pipeline types: metrics
+ */
+@JsonPropertyOrder({
+ ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_DISPLAY_NAME,
+ ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_ENABLED,
+ ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_ID,
+ ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_INCLUDE,
+ ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_TAGS,
+ ObservabilityPipelineAddMetricTagsProcessor.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ObservabilityPipelineAddMetricTagsProcessor {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name";
+ private String displayName;
+
+ public static final String JSON_PROPERTY_ENABLED = "enabled";
+ private Boolean enabled;
+
+ public static final String JSON_PROPERTY_ID = "id";
+ private String id;
+
+ public static final String JSON_PROPERTY_INCLUDE = "include";
+ private String include;
+
+ public static final String JSON_PROPERTY_TAGS = "tags";
+ private List tags = new ArrayList<>();
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private ObservabilityPipelineAddMetricTagsProcessorType type =
+ ObservabilityPipelineAddMetricTagsProcessorType.ADD_METRIC_TAGS;
+
+ public ObservabilityPipelineAddMetricTagsProcessor() {}
+
+ @JsonCreator
+ public ObservabilityPipelineAddMetricTagsProcessor(
+ @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled,
+ @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id,
+ @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TAGS)
+ List tags,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE)
+ ObservabilityPipelineAddMetricTagsProcessorType type) {
+ this.enabled = enabled;
+ this.id = id;
+ this.include = include;
+ this.tags = tags;
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessor displayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * The display name for a component.
+ *
+ * @return displayName
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DISPLAY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessor enabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Indicates whether the processor is enabled.
+ *
+ * @return enabled
+ */
+ @JsonProperty(JSON_PROPERTY_ENABLED)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessor id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * The unique identifier for this component. Used in other parts of the pipeline to reference this
+ * component (for example, as the input to downstream components).
+ *
+ * @return id
+ */
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessor include(String include) {
+ this.include = include;
+ return this;
+ }
+
+ /**
+ * A Datadog search query used to determine which metrics this processor targets.
+ *
+ * @return include
+ */
+ @JsonProperty(JSON_PROPERTY_INCLUDE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getInclude() {
+ return include;
+ }
+
+ public void setInclude(String include) {
+ this.include = include;
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessor tags(
+ List tags) {
+ this.tags = tags;
+ for (ObservabilityPipelineFieldValue item : tags) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessor addTagsItem(
+ ObservabilityPipelineFieldValue tagsItem) {
+ this.tags.add(tagsItem);
+ this.unparsed |= tagsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * A list of static tags (key-value pairs) added to each metric processed by this component.
+ *
+ * @return tags
+ */
+ @JsonProperty(JSON_PROPERTY_TAGS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public List getTags() {
+ return tags;
+ }
+
+ public void setTags(List tags) {
+ this.tags = tags;
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessor type(
+ ObservabilityPipelineAddMetricTagsProcessorType type) {
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ return this;
+ }
+
+ /**
+ * The processor type. The value must be add_metric_tags.
+ *
+ * @return type
+ */
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineAddMetricTagsProcessorType getType() {
+ return type;
+ }
+
+ public void setType(ObservabilityPipelineAddMetricTagsProcessorType 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 ObservabilityPipelineAddMetricTagsProcessor
+ */
+ @JsonAnySetter
+ public ObservabilityPipelineAddMetricTagsProcessor 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 ObservabilityPipelineAddMetricTagsProcessor object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ObservabilityPipelineAddMetricTagsProcessor observabilityPipelineAddMetricTagsProcessor =
+ (ObservabilityPipelineAddMetricTagsProcessor) o;
+ return Objects.equals(this.displayName, observabilityPipelineAddMetricTagsProcessor.displayName)
+ && Objects.equals(this.enabled, observabilityPipelineAddMetricTagsProcessor.enabled)
+ && Objects.equals(this.id, observabilityPipelineAddMetricTagsProcessor.id)
+ && Objects.equals(this.include, observabilityPipelineAddMetricTagsProcessor.include)
+ && Objects.equals(this.tags, observabilityPipelineAddMetricTagsProcessor.tags)
+ && Objects.equals(this.type, observabilityPipelineAddMetricTagsProcessor.type)
+ && Objects.equals(
+ this.additionalProperties,
+ observabilityPipelineAddMetricTagsProcessor.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(displayName, enabled, id, include, tags, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ObservabilityPipelineAddMetricTagsProcessor {\n");
+ sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n");
+ sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n");
+ sb.append(" id: ").append(toIndentedString(id)).append("\n");
+ sb.append(" include: ").append(toIndentedString(include)).append("\n");
+ sb.append(" tags: ").append(toIndentedString(tags)).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/v2/model/ObservabilityPipelineAddMetricTagsProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessorType.java
new file mode 100644
index 00000000000..b3fa713061d
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAddMetricTagsProcessorType.java
@@ -0,0 +1,63 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** The processor type. The value must be add_metric_tags. */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineAddMetricTagsProcessorType
+ .ObservabilityPipelineAddMetricTagsProcessorTypeSerializer.class)
+public class ObservabilityPipelineAddMetricTagsProcessorType extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("add_metric_tags"));
+
+ public static final ObservabilityPipelineAddMetricTagsProcessorType ADD_METRIC_TAGS =
+ new ObservabilityPipelineAddMetricTagsProcessorType("add_metric_tags");
+
+ ObservabilityPipelineAddMetricTagsProcessorType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineAddMetricTagsProcessorTypeSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineAddMetricTagsProcessorTypeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineAddMetricTagsProcessorTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineAddMetricTagsProcessorType value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineAddMetricTagsProcessorType fromValue(String value) {
+ return new ObservabilityPipelineAddMetricTagsProcessorType(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessor.java
new file mode 100644
index 00000000000..a624feca8df
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessor.java
@@ -0,0 +1,337 @@
+/*
+ * 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.v2.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;
+
+/**
+ * The aggregate processor combines metrics that share the same name and tags into a
+ * single metric over a configurable interval.
+ *
+ * Supported pipeline types: metrics
+ */
+@JsonPropertyOrder({
+ ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_DISPLAY_NAME,
+ ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_ENABLED,
+ ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_ID,
+ ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_INCLUDE,
+ ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_INTERVAL_SECS,
+ ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_MODE,
+ ObservabilityPipelineAggregateProcessor.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ObservabilityPipelineAggregateProcessor {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name";
+ private String displayName;
+
+ public static final String JSON_PROPERTY_ENABLED = "enabled";
+ private Boolean enabled;
+
+ public static final String JSON_PROPERTY_ID = "id";
+ private String id;
+
+ public static final String JSON_PROPERTY_INCLUDE = "include";
+ private String include;
+
+ public static final String JSON_PROPERTY_INTERVAL_SECS = "interval_secs";
+ private Long intervalSecs;
+
+ public static final String JSON_PROPERTY_MODE = "mode";
+ private ObservabilityPipelineAggregateProcessorMode mode;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private ObservabilityPipelineAggregateProcessorType type =
+ ObservabilityPipelineAggregateProcessorType.AGGREGATE;
+
+ public ObservabilityPipelineAggregateProcessor() {}
+
+ @JsonCreator
+ public ObservabilityPipelineAggregateProcessor(
+ @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled,
+ @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id,
+ @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include,
+ @JsonProperty(required = true, value = JSON_PROPERTY_INTERVAL_SECS) Long intervalSecs,
+ @JsonProperty(required = true, value = JSON_PROPERTY_MODE)
+ ObservabilityPipelineAggregateProcessorMode mode,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE)
+ ObservabilityPipelineAggregateProcessorType type) {
+ this.enabled = enabled;
+ this.id = id;
+ this.include = include;
+ this.intervalSecs = intervalSecs;
+ this.mode = mode;
+ this.unparsed |= !mode.isValid();
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public ObservabilityPipelineAggregateProcessor displayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * The display name for a component.
+ *
+ * @return displayName
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DISPLAY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public ObservabilityPipelineAggregateProcessor enabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Indicates whether the processor is enabled.
+ *
+ * @return enabled
+ */
+ @JsonProperty(JSON_PROPERTY_ENABLED)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public ObservabilityPipelineAggregateProcessor id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * The unique identifier for this component. Used in other parts of the pipeline to reference this
+ * component (for example, as the input to downstream components).
+ *
+ * @return id
+ */
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ObservabilityPipelineAggregateProcessor include(String include) {
+ this.include = include;
+ return this;
+ }
+
+ /**
+ * A Datadog search query used to determine which metrics this processor targets.
+ *
+ * @return include
+ */
+ @JsonProperty(JSON_PROPERTY_INCLUDE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getInclude() {
+ return include;
+ }
+
+ public void setInclude(String include) {
+ this.include = include;
+ }
+
+ public ObservabilityPipelineAggregateProcessor intervalSecs(Long intervalSecs) {
+ this.intervalSecs = intervalSecs;
+ return this;
+ }
+
+ /**
+ * The interval, in seconds, over which metrics are aggregated. minimum: 1 maximum: 60
+ *
+ * @return intervalSecs
+ */
+ @JsonProperty(JSON_PROPERTY_INTERVAL_SECS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getIntervalSecs() {
+ return intervalSecs;
+ }
+
+ public void setIntervalSecs(Long intervalSecs) {
+ this.intervalSecs = intervalSecs;
+ }
+
+ public ObservabilityPipelineAggregateProcessor mode(
+ ObservabilityPipelineAggregateProcessorMode mode) {
+ this.mode = mode;
+ this.unparsed |= !mode.isValid();
+ return this;
+ }
+
+ /**
+ * The aggregation mode applied to metrics that share the same name and tags within the interval.
+ *
+ * @return mode
+ */
+ @JsonProperty(JSON_PROPERTY_MODE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineAggregateProcessorMode getMode() {
+ return mode;
+ }
+
+ public void setMode(ObservabilityPipelineAggregateProcessorMode mode) {
+ if (!mode.isValid()) {
+ this.unparsed = true;
+ }
+ this.mode = mode;
+ }
+
+ public ObservabilityPipelineAggregateProcessor type(
+ ObservabilityPipelineAggregateProcessorType type) {
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ return this;
+ }
+
+ /**
+ * The processor type. The value must be aggregate.
+ *
+ * @return type
+ */
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineAggregateProcessorType getType() {
+ return type;
+ }
+
+ public void setType(ObservabilityPipelineAggregateProcessorType 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 ObservabilityPipelineAggregateProcessor
+ */
+ @JsonAnySetter
+ public ObservabilityPipelineAggregateProcessor 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 ObservabilityPipelineAggregateProcessor object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ObservabilityPipelineAggregateProcessor observabilityPipelineAggregateProcessor =
+ (ObservabilityPipelineAggregateProcessor) o;
+ return Objects.equals(this.displayName, observabilityPipelineAggregateProcessor.displayName)
+ && Objects.equals(this.enabled, observabilityPipelineAggregateProcessor.enabled)
+ && Objects.equals(this.id, observabilityPipelineAggregateProcessor.id)
+ && Objects.equals(this.include, observabilityPipelineAggregateProcessor.include)
+ && Objects.equals(this.intervalSecs, observabilityPipelineAggregateProcessor.intervalSecs)
+ && Objects.equals(this.mode, observabilityPipelineAggregateProcessor.mode)
+ && Objects.equals(this.type, observabilityPipelineAggregateProcessor.type)
+ && Objects.equals(
+ this.additionalProperties,
+ observabilityPipelineAggregateProcessor.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ displayName, enabled, id, include, intervalSecs, mode, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ObservabilityPipelineAggregateProcessor {\n");
+ sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n");
+ sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n");
+ sb.append(" id: ").append(toIndentedString(id)).append("\n");
+ sb.append(" include: ").append(toIndentedString(include)).append("\n");
+ sb.append(" intervalSecs: ").append(toIndentedString(intervalSecs)).append("\n");
+ sb.append(" mode: ").append(toIndentedString(mode)).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/v2/model/ObservabilityPipelineAggregateProcessorMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorMode.java
new file mode 100644
index 00000000000..d3099119aaf
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorMode.java
@@ -0,0 +1,77 @@
+/*
+ * 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.v2.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * The aggregation mode applied to metrics that share the same name and tags within the interval.
+ */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineAggregateProcessorMode
+ .ObservabilityPipelineAggregateProcessorModeSerializer.class)
+public class ObservabilityPipelineAggregateProcessorMode extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("auto", "sum", "latest", "count", "max", "min", "mean"));
+
+ public static final ObservabilityPipelineAggregateProcessorMode AUTO =
+ new ObservabilityPipelineAggregateProcessorMode("auto");
+ public static final ObservabilityPipelineAggregateProcessorMode SUM =
+ new ObservabilityPipelineAggregateProcessorMode("sum");
+ public static final ObservabilityPipelineAggregateProcessorMode LATEST =
+ new ObservabilityPipelineAggregateProcessorMode("latest");
+ public static final ObservabilityPipelineAggregateProcessorMode COUNT =
+ new ObservabilityPipelineAggregateProcessorMode("count");
+ public static final ObservabilityPipelineAggregateProcessorMode MAX =
+ new ObservabilityPipelineAggregateProcessorMode("max");
+ public static final ObservabilityPipelineAggregateProcessorMode MIN =
+ new ObservabilityPipelineAggregateProcessorMode("min");
+ public static final ObservabilityPipelineAggregateProcessorMode MEAN =
+ new ObservabilityPipelineAggregateProcessorMode("mean");
+
+ ObservabilityPipelineAggregateProcessorMode(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineAggregateProcessorModeSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineAggregateProcessorModeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineAggregateProcessorModeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineAggregateProcessorMode value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineAggregateProcessorMode fromValue(String value) {
+ return new ObservabilityPipelineAggregateProcessorMode(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorType.java
new file mode 100644
index 00000000000..537de77679e
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineAggregateProcessorType.java
@@ -0,0 +1,62 @@
+/*
+ * 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.v2.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** The processor type. The value must be aggregate. */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineAggregateProcessorType
+ .ObservabilityPipelineAggregateProcessorTypeSerializer.class)
+public class ObservabilityPipelineAggregateProcessorType extends ModelEnum {
+
+ private static final Set allowedValues = new HashSet(Arrays.asList("aggregate"));
+
+ public static final ObservabilityPipelineAggregateProcessorType AGGREGATE =
+ new ObservabilityPipelineAggregateProcessorType("aggregate");
+
+ ObservabilityPipelineAggregateProcessorType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineAggregateProcessorTypeSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineAggregateProcessorTypeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineAggregateProcessorTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineAggregateProcessorType value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineAggregateProcessorType fromValue(String value) {
+ return new ObservabilityPipelineAggregateProcessorType(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java
index db537b1a3bc..5507e67af27 100644
--- a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigProcessorItem.java
@@ -1155,6 +1155,109 @@ public ObservabilityPipelineConfigProcessorItem deserialize(
e);
}
+ // deserialize ObservabilityPipelineAddMetricTagsProcessor
+ try {
+ boolean attemptParsing = true;
+ // ensure that we respect type coercion as set on the client ObjectMapper
+ if (ObservabilityPipelineAddMetricTagsProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Long.class)
+ || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Float.class)
+ || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Double.class)
+ || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Boolean.class)
+ || ObservabilityPipelineAddMetricTagsProcessor.class.equals(String.class)) {
+ attemptParsing = typeCoercion;
+ if (!attemptParsing) {
+ attemptParsing |=
+ ((ObservabilityPipelineAddMetricTagsProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Long.class))
+ && token == JsonToken.VALUE_NUMBER_INT);
+ attemptParsing |=
+ ((ObservabilityPipelineAddMetricTagsProcessor.class.equals(Float.class)
+ || ObservabilityPipelineAddMetricTagsProcessor.class.equals(Double.class))
+ && (token == JsonToken.VALUE_NUMBER_FLOAT
+ || token == JsonToken.VALUE_NUMBER_INT));
+ attemptParsing |=
+ (ObservabilityPipelineAddMetricTagsProcessor.class.equals(Boolean.class)
+ && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
+ attemptParsing |=
+ (ObservabilityPipelineAddMetricTagsProcessor.class.equals(String.class)
+ && token == JsonToken.VALUE_STRING);
+ }
+ }
+ if (attemptParsing) {
+ tmp =
+ tree.traverse(jp.getCodec())
+ .readValueAs(ObservabilityPipelineAddMetricTagsProcessor.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 (!((ObservabilityPipelineAddMetricTagsProcessor) tmp).unparsed) {
+ deserialized = tmp;
+ match++;
+ }
+ log.log(
+ Level.FINER,
+ "Input data matches schema 'ObservabilityPipelineAddMetricTagsProcessor'");
+ }
+ } catch (Exception e) {
+ // deserialization failed, continue
+ log.log(
+ Level.FINER,
+ "Input data does not match schema 'ObservabilityPipelineAddMetricTagsProcessor'",
+ e);
+ }
+
+ // deserialize ObservabilityPipelineAggregateProcessor
+ try {
+ boolean attemptParsing = true;
+ // ensure that we respect type coercion as set on the client ObjectMapper
+ if (ObservabilityPipelineAggregateProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineAggregateProcessor.class.equals(Long.class)
+ || ObservabilityPipelineAggregateProcessor.class.equals(Float.class)
+ || ObservabilityPipelineAggregateProcessor.class.equals(Double.class)
+ || ObservabilityPipelineAggregateProcessor.class.equals(Boolean.class)
+ || ObservabilityPipelineAggregateProcessor.class.equals(String.class)) {
+ attemptParsing = typeCoercion;
+ if (!attemptParsing) {
+ attemptParsing |=
+ ((ObservabilityPipelineAggregateProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineAggregateProcessor.class.equals(Long.class))
+ && token == JsonToken.VALUE_NUMBER_INT);
+ attemptParsing |=
+ ((ObservabilityPipelineAggregateProcessor.class.equals(Float.class)
+ || ObservabilityPipelineAggregateProcessor.class.equals(Double.class))
+ && (token == JsonToken.VALUE_NUMBER_FLOAT
+ || token == JsonToken.VALUE_NUMBER_INT));
+ attemptParsing |=
+ (ObservabilityPipelineAggregateProcessor.class.equals(Boolean.class)
+ && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
+ attemptParsing |=
+ (ObservabilityPipelineAggregateProcessor.class.equals(String.class)
+ && token == JsonToken.VALUE_STRING);
+ }
+ }
+ if (attemptParsing) {
+ tmp =
+ tree.traverse(jp.getCodec())
+ .readValueAs(ObservabilityPipelineAggregateProcessor.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 (!((ObservabilityPipelineAggregateProcessor) tmp).unparsed) {
+ deserialized = tmp;
+ match++;
+ }
+ log.log(
+ Level.FINER, "Input data matches schema 'ObservabilityPipelineAggregateProcessor'");
+ }
+ } catch (Exception e) {
+ // deserialization failed, continue
+ log.log(
+ Level.FINER,
+ "Input data does not match schema 'ObservabilityPipelineAggregateProcessor'",
+ e);
+ }
+
// deserialize ObservabilityPipelineMetricTagsProcessor
try {
boolean attemptParsing = true;
@@ -1206,6 +1309,113 @@ public ObservabilityPipelineConfigProcessorItem deserialize(
e);
}
+ // deserialize ObservabilityPipelineRenameMetricTagsProcessor
+ try {
+ boolean attemptParsing = true;
+ // ensure that we respect type coercion as set on the client ObjectMapper
+ if (ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Long.class)
+ || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Float.class)
+ || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Double.class)
+ || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Boolean.class)
+ || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(String.class)) {
+ attemptParsing = typeCoercion;
+ if (!attemptParsing) {
+ attemptParsing |=
+ ((ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Long.class))
+ && token == JsonToken.VALUE_NUMBER_INT);
+ attemptParsing |=
+ ((ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Float.class)
+ || ObservabilityPipelineRenameMetricTagsProcessor.class.equals(
+ Double.class))
+ && (token == JsonToken.VALUE_NUMBER_FLOAT
+ || token == JsonToken.VALUE_NUMBER_INT));
+ attemptParsing |=
+ (ObservabilityPipelineRenameMetricTagsProcessor.class.equals(Boolean.class)
+ && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
+ attemptParsing |=
+ (ObservabilityPipelineRenameMetricTagsProcessor.class.equals(String.class)
+ && token == JsonToken.VALUE_STRING);
+ }
+ }
+ if (attemptParsing) {
+ tmp =
+ tree.traverse(jp.getCodec())
+ .readValueAs(ObservabilityPipelineRenameMetricTagsProcessor.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 (!((ObservabilityPipelineRenameMetricTagsProcessor) tmp).unparsed) {
+ deserialized = tmp;
+ match++;
+ }
+ log.log(
+ Level.FINER,
+ "Input data matches schema 'ObservabilityPipelineRenameMetricTagsProcessor'");
+ }
+ } catch (Exception e) {
+ // deserialization failed, continue
+ log.log(
+ Level.FINER,
+ "Input data does not match schema 'ObservabilityPipelineRenameMetricTagsProcessor'",
+ e);
+ }
+
+ // deserialize ObservabilityPipelineTagCardinalityLimitProcessor
+ try {
+ boolean attemptParsing = true;
+ // ensure that we respect type coercion as set on the client ObjectMapper
+ if (ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Long.class)
+ || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Float.class)
+ || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Double.class)
+ || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Boolean.class)
+ || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(String.class)) {
+ attemptParsing = typeCoercion;
+ if (!attemptParsing) {
+ attemptParsing |=
+ ((ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Integer.class)
+ || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(
+ Long.class))
+ && token == JsonToken.VALUE_NUMBER_INT);
+ attemptParsing |=
+ ((ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Float.class)
+ || ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(
+ Double.class))
+ && (token == JsonToken.VALUE_NUMBER_FLOAT
+ || token == JsonToken.VALUE_NUMBER_INT));
+ attemptParsing |=
+ (ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(Boolean.class)
+ && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
+ attemptParsing |=
+ (ObservabilityPipelineTagCardinalityLimitProcessor.class.equals(String.class)
+ && token == JsonToken.VALUE_STRING);
+ }
+ }
+ if (attemptParsing) {
+ tmp =
+ tree.traverse(jp.getCodec())
+ .readValueAs(ObservabilityPipelineTagCardinalityLimitProcessor.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 (!((ObservabilityPipelineTagCardinalityLimitProcessor) tmp).unparsed) {
+ deserialized = tmp;
+ match++;
+ }
+ log.log(
+ Level.FINER,
+ "Input data matches schema 'ObservabilityPipelineTagCardinalityLimitProcessor'");
+ }
+ } catch (Exception e) {
+ // deserialization failed, continue
+ log.log(
+ Level.FINER,
+ "Input data does not match schema 'ObservabilityPipelineTagCardinalityLimitProcessor'",
+ e);
+ }
+
ObservabilityPipelineConfigProcessorItem ret = new ObservabilityPipelineConfigProcessorItem();
if (match == 1) {
ret.setActualInstance(deserialized);
@@ -1342,11 +1552,33 @@ public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineThrottlePro
setActualInstance(o);
}
+ public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineAddMetricTagsProcessor o) {
+ super("oneOf", Boolean.FALSE);
+ setActualInstance(o);
+ }
+
+ public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineAggregateProcessor o) {
+ super("oneOf", Boolean.FALSE);
+ setActualInstance(o);
+ }
+
public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineMetricTagsProcessor o) {
super("oneOf", Boolean.FALSE);
setActualInstance(o);
}
+ public ObservabilityPipelineConfigProcessorItem(
+ ObservabilityPipelineRenameMetricTagsProcessor o) {
+ super("oneOf", Boolean.FALSE);
+ setActualInstance(o);
+ }
+
+ public ObservabilityPipelineConfigProcessorItem(
+ ObservabilityPipelineTagCardinalityLimitProcessor o) {
+ super("oneOf", Boolean.FALSE);
+ setActualInstance(o);
+ }
+
static {
schemas.put(
"ObservabilityPipelineFilterProcessor",
@@ -1411,9 +1643,21 @@ public ObservabilityPipelineConfigProcessorItem(ObservabilityPipelineMetricTagsP
schemas.put(
"ObservabilityPipelineThrottleProcessor",
new GenericType() {});
+ schemas.put(
+ "ObservabilityPipelineAddMetricTagsProcessor",
+ new GenericType() {});
+ schemas.put(
+ "ObservabilityPipelineAggregateProcessor",
+ new GenericType() {});
schemas.put(
"ObservabilityPipelineMetricTagsProcessor",
new GenericType() {});
+ schemas.put(
+ "ObservabilityPipelineRenameMetricTagsProcessor",
+ new GenericType() {});
+ schemas.put(
+ "ObservabilityPipelineTagCardinalityLimitProcessor",
+ new GenericType() {});
JSON.registerDescendants(
ObservabilityPipelineConfigProcessorItem.class, Collections.unmodifiableMap(schemas));
}
@@ -1436,7 +1680,9 @@ public Map getSchemas() {
* ObservabilityPipelineRemoveFieldsProcessor, ObservabilityPipelineRenameFieldsProcessor,
* ObservabilityPipelineSampleProcessor, ObservabilityPipelineSensitiveDataScannerProcessor,
* ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor,
- * ObservabilityPipelineMetricTagsProcessor
+ * ObservabilityPipelineAddMetricTagsProcessor, ObservabilityPipelineAggregateProcessor,
+ * ObservabilityPipelineMetricTagsProcessor, ObservabilityPipelineRenameMetricTagsProcessor,
+ * ObservabilityPipelineTagCardinalityLimitProcessor
*
* It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a
* composed schema (allOf, anyOf, oneOf).
@@ -1550,11 +1796,33 @@ public void setActualInstance(Object instance) {
super.setActualInstance(instance);
return;
}
+ if (JSON.isInstanceOf(
+ ObservabilityPipelineAddMetricTagsProcessor.class, instance, new HashSet>())) {
+ super.setActualInstance(instance);
+ return;
+ }
+ if (JSON.isInstanceOf(
+ ObservabilityPipelineAggregateProcessor.class, instance, new HashSet>())) {
+ super.setActualInstance(instance);
+ return;
+ }
if (JSON.isInstanceOf(
ObservabilityPipelineMetricTagsProcessor.class, instance, new HashSet>())) {
super.setActualInstance(instance);
return;
}
+ if (JSON.isInstanceOf(
+ ObservabilityPipelineRenameMetricTagsProcessor.class, instance, new HashSet>())) {
+ super.setActualInstance(instance);
+ return;
+ }
+ if (JSON.isInstanceOf(
+ ObservabilityPipelineTagCardinalityLimitProcessor.class,
+ instance,
+ new HashSet>())) {
+ super.setActualInstance(instance);
+ return;
+ }
if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) {
super.setActualInstance(instance);
@@ -1574,7 +1842,10 @@ public void setActualInstance(Object instance) {
+ " ObservabilityPipelineRenameFieldsProcessor, ObservabilityPipelineSampleProcessor,"
+ " ObservabilityPipelineSensitiveDataScannerProcessor,"
+ " ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor,"
- + " ObservabilityPipelineMetricTagsProcessor");
+ + " ObservabilityPipelineAddMetricTagsProcessor,"
+ + " ObservabilityPipelineAggregateProcessor, ObservabilityPipelineMetricTagsProcessor,"
+ + " ObservabilityPipelineRenameMetricTagsProcessor,"
+ + " ObservabilityPipelineTagCardinalityLimitProcessor");
}
/**
@@ -1589,7 +1860,9 @@ public void setActualInstance(Object instance) {
* ObservabilityPipelineRemoveFieldsProcessor, ObservabilityPipelineRenameFieldsProcessor,
* ObservabilityPipelineSampleProcessor, ObservabilityPipelineSensitiveDataScannerProcessor,
* ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor,
- * ObservabilityPipelineMetricTagsProcessor
+ * ObservabilityPipelineAddMetricTagsProcessor, ObservabilityPipelineAggregateProcessor,
+ * ObservabilityPipelineMetricTagsProcessor, ObservabilityPipelineRenameMetricTagsProcessor,
+ * ObservabilityPipelineTagCardinalityLimitProcessor
*
* @return The actual instance (ObservabilityPipelineFilterProcessor,
* ObservabilityPipelineAddEnvVarsProcessor, ObservabilityPipelineAddFieldsProcessor,
@@ -1603,7 +1876,9 @@ public void setActualInstance(Object instance) {
* ObservabilityPipelineRenameFieldsProcessor, ObservabilityPipelineSampleProcessor,
* ObservabilityPipelineSensitiveDataScannerProcessor,
* ObservabilityPipelineSplitArrayProcessor, ObservabilityPipelineThrottleProcessor,
- * ObservabilityPipelineMetricTagsProcessor)
+ * ObservabilityPipelineAddMetricTagsProcessor, ObservabilityPipelineAggregateProcessor,
+ * ObservabilityPipelineMetricTagsProcessor, ObservabilityPipelineRenameMetricTagsProcessor,
+ * ObservabilityPipelineTagCardinalityLimitProcessor)
*/
@Override
public Object getActualInstance() {
@@ -1868,6 +2143,31 @@ public ObservabilityPipelineThrottleProcessor getObservabilityPipelineThrottlePr
return (ObservabilityPipelineThrottleProcessor) super.getActualInstance();
}
+ /**
+ * Get the actual instance of `ObservabilityPipelineAddMetricTagsProcessor`. If the actual
+ * instance is not `ObservabilityPipelineAddMetricTagsProcessor`, the ClassCastException will be
+ * thrown.
+ *
+ * @return The actual instance of `ObservabilityPipelineAddMetricTagsProcessor`
+ * @throws ClassCastException if the instance is not `ObservabilityPipelineAddMetricTagsProcessor`
+ */
+ public ObservabilityPipelineAddMetricTagsProcessor
+ getObservabilityPipelineAddMetricTagsProcessor() throws ClassCastException {
+ return (ObservabilityPipelineAddMetricTagsProcessor) super.getActualInstance();
+ }
+
+ /**
+ * Get the actual instance of `ObservabilityPipelineAggregateProcessor`. If the actual instance is
+ * not `ObservabilityPipelineAggregateProcessor`, the ClassCastException will be thrown.
+ *
+ * @return The actual instance of `ObservabilityPipelineAggregateProcessor`
+ * @throws ClassCastException if the instance is not `ObservabilityPipelineAggregateProcessor`
+ */
+ public ObservabilityPipelineAggregateProcessor getObservabilityPipelineAggregateProcessor()
+ throws ClassCastException {
+ return (ObservabilityPipelineAggregateProcessor) super.getActualInstance();
+ }
+
/**
* Get the actual instance of `ObservabilityPipelineMetricTagsProcessor`. If the actual instance
* is not `ObservabilityPipelineMetricTagsProcessor`, the ClassCastException will be thrown.
@@ -1879,4 +2179,32 @@ public ObservabilityPipelineMetricTagsProcessor getObservabilityPipelineMetricTa
throws ClassCastException {
return (ObservabilityPipelineMetricTagsProcessor) super.getActualInstance();
}
+
+ /**
+ * Get the actual instance of `ObservabilityPipelineRenameMetricTagsProcessor`. If the actual
+ * instance is not `ObservabilityPipelineRenameMetricTagsProcessor`, the ClassCastException will
+ * be thrown.
+ *
+ * @return The actual instance of `ObservabilityPipelineRenameMetricTagsProcessor`
+ * @throws ClassCastException if the instance is not
+ * `ObservabilityPipelineRenameMetricTagsProcessor`
+ */
+ public ObservabilityPipelineRenameMetricTagsProcessor
+ getObservabilityPipelineRenameMetricTagsProcessor() throws ClassCastException {
+ return (ObservabilityPipelineRenameMetricTagsProcessor) super.getActualInstance();
+ }
+
+ /**
+ * Get the actual instance of `ObservabilityPipelineTagCardinalityLimitProcessor`. If the actual
+ * instance is not `ObservabilityPipelineTagCardinalityLimitProcessor`, the ClassCastException
+ * will be thrown.
+ *
+ * @return The actual instance of `ObservabilityPipelineTagCardinalityLimitProcessor`
+ * @throws ClassCastException if the instance is not
+ * `ObservabilityPipelineTagCardinalityLimitProcessor`
+ */
+ public ObservabilityPipelineTagCardinalityLimitProcessor
+ getObservabilityPipelineTagCardinalityLimitProcessor() throws ClassCastException {
+ return (ObservabilityPipelineTagCardinalityLimitProcessor) super.getActualInstance();
+ }
}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessor.java
new file mode 100644
index 00000000000..087766d97d3
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessor.java
@@ -0,0 +1,316 @@
+/*
+ * 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.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * The rename_metric_tags processor changes the keys of tags on metrics.
+ *
+ * Supported pipeline types: metrics
+ */
+@JsonPropertyOrder({
+ ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_DISPLAY_NAME,
+ ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_ENABLED,
+ ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_ID,
+ ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_INCLUDE,
+ ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_TAGS,
+ ObservabilityPipelineRenameMetricTagsProcessor.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ObservabilityPipelineRenameMetricTagsProcessor {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name";
+ private String displayName;
+
+ public static final String JSON_PROPERTY_ENABLED = "enabled";
+ private Boolean enabled;
+
+ public static final String JSON_PROPERTY_ID = "id";
+ private String id;
+
+ public static final String JSON_PROPERTY_INCLUDE = "include";
+ private String include;
+
+ public static final String JSON_PROPERTY_TAGS = "tags";
+ private List tags = new ArrayList<>();
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private ObservabilityPipelineRenameMetricTagsProcessorType type =
+ ObservabilityPipelineRenameMetricTagsProcessorType.RENAME_METRIC_TAGS;
+
+ public ObservabilityPipelineRenameMetricTagsProcessor() {}
+
+ @JsonCreator
+ public ObservabilityPipelineRenameMetricTagsProcessor(
+ @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled,
+ @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id,
+ @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TAGS)
+ List tags,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE)
+ ObservabilityPipelineRenameMetricTagsProcessorType type) {
+ this.enabled = enabled;
+ this.id = id;
+ this.include = include;
+ this.tags = tags;
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessor displayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * The display name for a component.
+ *
+ * @return displayName
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DISPLAY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessor enabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Indicates whether the processor is enabled.
+ *
+ * @return enabled
+ */
+ @JsonProperty(JSON_PROPERTY_ENABLED)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessor id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * The unique identifier for this component. Used in other parts of the pipeline to reference this
+ * component (for example, as the input to downstream components).
+ *
+ * @return id
+ */
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessor include(String include) {
+ this.include = include;
+ return this;
+ }
+
+ /**
+ * A Datadog search query used to determine which metrics this processor targets.
+ *
+ * @return include
+ */
+ @JsonProperty(JSON_PROPERTY_INCLUDE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getInclude() {
+ return include;
+ }
+
+ public void setInclude(String include) {
+ this.include = include;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessor tags(
+ List tags) {
+ this.tags = tags;
+ for (ObservabilityPipelineRenameMetricTagsProcessorTag item : tags) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessor addTagsItem(
+ ObservabilityPipelineRenameMetricTagsProcessorTag tagsItem) {
+ this.tags.add(tagsItem);
+ this.unparsed |= tagsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * A list of rename rules specifying which tag keys to rename on each metric.
+ *
+ * @return tags
+ */
+ @JsonProperty(JSON_PROPERTY_TAGS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public List getTags() {
+ return tags;
+ }
+
+ public void setTags(List tags) {
+ this.tags = tags;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessor type(
+ ObservabilityPipelineRenameMetricTagsProcessorType type) {
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ return this;
+ }
+
+ /**
+ * The processor type. The value must be rename_metric_tags.
+ *
+ * @return type
+ */
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineRenameMetricTagsProcessorType getType() {
+ return type;
+ }
+
+ public void setType(ObservabilityPipelineRenameMetricTagsProcessorType 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 ObservabilityPipelineRenameMetricTagsProcessor
+ */
+ @JsonAnySetter
+ public ObservabilityPipelineRenameMetricTagsProcessor 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 ObservabilityPipelineRenameMetricTagsProcessor object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ObservabilityPipelineRenameMetricTagsProcessor observabilityPipelineRenameMetricTagsProcessor =
+ (ObservabilityPipelineRenameMetricTagsProcessor) o;
+ return Objects.equals(
+ this.displayName, observabilityPipelineRenameMetricTagsProcessor.displayName)
+ && Objects.equals(this.enabled, observabilityPipelineRenameMetricTagsProcessor.enabled)
+ && Objects.equals(this.id, observabilityPipelineRenameMetricTagsProcessor.id)
+ && Objects.equals(this.include, observabilityPipelineRenameMetricTagsProcessor.include)
+ && Objects.equals(this.tags, observabilityPipelineRenameMetricTagsProcessor.tags)
+ && Objects.equals(this.type, observabilityPipelineRenameMetricTagsProcessor.type)
+ && Objects.equals(
+ this.additionalProperties,
+ observabilityPipelineRenameMetricTagsProcessor.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(displayName, enabled, id, include, tags, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ObservabilityPipelineRenameMetricTagsProcessor {\n");
+ sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n");
+ sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n");
+ sb.append(" id: ").append(toIndentedString(id)).append("\n");
+ sb.append(" include: ").append(toIndentedString(include)).append("\n");
+ sb.append(" tags: ").append(toIndentedString(tags)).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/v2/model/ObservabilityPipelineRenameMetricTagsProcessorTag.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorTag.java
new file mode 100644
index 00000000000..2f17058fcad
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorTag.java
@@ -0,0 +1,178 @@
+/*
+ * 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.v2.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;
+
+/** Defines how to rename a tag on metric events. */
+@JsonPropertyOrder({
+ ObservabilityPipelineRenameMetricTagsProcessorTag.JSON_PROPERTY_RENAME_TO,
+ ObservabilityPipelineRenameMetricTagsProcessorTag.JSON_PROPERTY_TAG
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ObservabilityPipelineRenameMetricTagsProcessorTag {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_RENAME_TO = "rename_to";
+ private String renameTo;
+
+ public static final String JSON_PROPERTY_TAG = "tag";
+ private String tag;
+
+ public ObservabilityPipelineRenameMetricTagsProcessorTag() {}
+
+ @JsonCreator
+ public ObservabilityPipelineRenameMetricTagsProcessorTag(
+ @JsonProperty(required = true, value = JSON_PROPERTY_RENAME_TO) String renameTo,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TAG) String tag) {
+ this.renameTo = renameTo;
+ this.tag = tag;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessorTag renameTo(String renameTo) {
+ this.renameTo = renameTo;
+ return this;
+ }
+
+ /**
+ * The new tag key to assign in place of the original.
+ *
+ * @return renameTo
+ */
+ @JsonProperty(JSON_PROPERTY_RENAME_TO)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getRenameTo() {
+ return renameTo;
+ }
+
+ public void setRenameTo(String renameTo) {
+ this.renameTo = renameTo;
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessorTag tag(String tag) {
+ this.tag = tag;
+ return this;
+ }
+
+ /**
+ * The original tag key on the metric event.
+ *
+ * @return tag
+ */
+ @JsonProperty(JSON_PROPERTY_TAG)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getTag() {
+ return tag;
+ }
+
+ public void setTag(String tag) {
+ this.tag = tag;
+ }
+
+ /**
+ * 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 ObservabilityPipelineRenameMetricTagsProcessorTag
+ */
+ @JsonAnySetter
+ public ObservabilityPipelineRenameMetricTagsProcessorTag 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 ObservabilityPipelineRenameMetricTagsProcessorTag object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ObservabilityPipelineRenameMetricTagsProcessorTag
+ observabilityPipelineRenameMetricTagsProcessorTag =
+ (ObservabilityPipelineRenameMetricTagsProcessorTag) o;
+ return Objects.equals(this.renameTo, observabilityPipelineRenameMetricTagsProcessorTag.renameTo)
+ && Objects.equals(this.tag, observabilityPipelineRenameMetricTagsProcessorTag.tag)
+ && Objects.equals(
+ this.additionalProperties,
+ observabilityPipelineRenameMetricTagsProcessorTag.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(renameTo, tag, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ObservabilityPipelineRenameMetricTagsProcessorTag {\n");
+ sb.append(" renameTo: ").append(toIndentedString(renameTo)).append("\n");
+ sb.append(" tag: ").append(toIndentedString(tag)).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/v2/model/ObservabilityPipelineRenameMetricTagsProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorType.java
new file mode 100644
index 00000000000..8833a1cc1aa
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineRenameMetricTagsProcessorType.java
@@ -0,0 +1,63 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** The processor type. The value must be rename_metric_tags. */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineRenameMetricTagsProcessorType
+ .ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer.class)
+public class ObservabilityPipelineRenameMetricTagsProcessorType extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("rename_metric_tags"));
+
+ public static final ObservabilityPipelineRenameMetricTagsProcessorType RENAME_METRIC_TAGS =
+ new ObservabilityPipelineRenameMetricTagsProcessorType("rename_metric_tags");
+
+ ObservabilityPipelineRenameMetricTagsProcessorType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineRenameMetricTagsProcessorTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineRenameMetricTagsProcessorType value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineRenameMetricTagsProcessorType fromValue(String value) {
+ return new ObservabilityPipelineRenameMetricTagsProcessorType(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessor.java
new file mode 100644
index 00000000000..18f6e5f55c5
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessor.java
@@ -0,0 +1,403 @@
+/*
+ * 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.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * The tag_cardinality_limit processor caps the number of distinct tag value
+ * combinations on metrics, dropping tags or events once the limit is exceeded.
+ *
+ * Supported pipeline types: metrics
+ */
+@JsonPropertyOrder({
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_DISPLAY_NAME,
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_ENABLED,
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_ID,
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_INCLUDE,
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_LIMIT_EXCEEDED_ACTION,
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_PER_METRIC_LIMITS,
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_TYPE,
+ ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_VALUE_LIMIT
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ObservabilityPipelineTagCardinalityLimitProcessor {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name";
+ private String displayName;
+
+ public static final String JSON_PROPERTY_ENABLED = "enabled";
+ private Boolean enabled;
+
+ public static final String JSON_PROPERTY_ID = "id";
+ private String id;
+
+ public static final String JSON_PROPERTY_INCLUDE = "include";
+ private String include;
+
+ public static final String JSON_PROPERTY_LIMIT_EXCEEDED_ACTION = "limit_exceeded_action";
+ private ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction;
+
+ public static final String JSON_PROPERTY_PER_METRIC_LIMITS = "per_metric_limits";
+ private List perMetricLimits =
+ null;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private ObservabilityPipelineTagCardinalityLimitProcessorType type =
+ ObservabilityPipelineTagCardinalityLimitProcessorType.TAG_CARDINALITY_LIMIT;
+
+ public static final String JSON_PROPERTY_VALUE_LIMIT = "value_limit";
+ private Long valueLimit;
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor() {}
+
+ @JsonCreator
+ public ObservabilityPipelineTagCardinalityLimitProcessor(
+ @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled,
+ @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id,
+ @JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include,
+ @JsonProperty(required = true, value = JSON_PROPERTY_LIMIT_EXCEEDED_ACTION)
+ ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE)
+ ObservabilityPipelineTagCardinalityLimitProcessorType type,
+ @JsonProperty(required = true, value = JSON_PROPERTY_VALUE_LIMIT) Long valueLimit) {
+ this.enabled = enabled;
+ this.id = id;
+ this.include = include;
+ this.limitExceededAction = limitExceededAction;
+ this.unparsed |= !limitExceededAction.isValid();
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ this.valueLimit = valueLimit;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor displayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * The display name for a component.
+ *
+ * @return displayName
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DISPLAY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor enabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Indicates whether the processor is enabled.
+ *
+ * @return enabled
+ */
+ @JsonProperty(JSON_PROPERTY_ENABLED)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * The unique identifier for this component. Used in other parts of the pipeline to reference this
+ * component (for example, as the input to downstream components).
+ *
+ * @return id
+ */
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor include(String include) {
+ this.include = include;
+ return this;
+ }
+
+ /**
+ * A Datadog search query used to determine which metrics this processor targets.
+ *
+ * @return include
+ */
+ @JsonProperty(JSON_PROPERTY_INCLUDE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getInclude() {
+ return include;
+ }
+
+ public void setInclude(String include) {
+ this.include = include;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor limitExceededAction(
+ ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) {
+ this.limitExceededAction = limitExceededAction;
+ this.unparsed |= !limitExceededAction.isValid();
+ return this;
+ }
+
+ /**
+ * The action to take when the cardinality limit is exceeded.
+ *
+ * @return limitExceededAction
+ */
+ @JsonProperty(JSON_PROPERTY_LIMIT_EXCEEDED_ACTION)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineTagCardinalityLimitProcessorAction getLimitExceededAction() {
+ return limitExceededAction;
+ }
+
+ public void setLimitExceededAction(
+ ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) {
+ if (!limitExceededAction.isValid()) {
+ this.unparsed = true;
+ }
+ this.limitExceededAction = limitExceededAction;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor perMetricLimits(
+ List perMetricLimits) {
+ this.perMetricLimits = perMetricLimits;
+ for (ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit item : perMetricLimits) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor addPerMetricLimitsItem(
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit perMetricLimitsItem) {
+ if (this.perMetricLimits == null) {
+ this.perMetricLimits = new ArrayList<>();
+ }
+ this.perMetricLimits.add(perMetricLimitsItem);
+ this.unparsed |= perMetricLimitsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * A list of per-metric cardinality overrides that take precedence over the default
+ * value_limit.
+ *
+ * @return perMetricLimits
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PER_METRIC_LIMITS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public List
+ getPerMetricLimits() {
+ return perMetricLimits;
+ }
+
+ public void setPerMetricLimits(
+ List perMetricLimits) {
+ this.perMetricLimits = perMetricLimits;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor type(
+ ObservabilityPipelineTagCardinalityLimitProcessorType type) {
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ return this;
+ }
+
+ /**
+ * The processor type. The value must be tag_cardinality_limit.
+ *
+ * @return type
+ */
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineTagCardinalityLimitProcessorType getType() {
+ return type;
+ }
+
+ public void setType(ObservabilityPipelineTagCardinalityLimitProcessorType type) {
+ if (!type.isValid()) {
+ this.unparsed = true;
+ }
+ this.type = type;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessor valueLimit(Long valueLimit) {
+ this.valueLimit = valueLimit;
+ return this;
+ }
+
+ /**
+ * The default maximum number of distinct tag value combinations allowed per metric. minimum: 0
+ * maximum: 1000000
+ *
+ * @return valueLimit
+ */
+ @JsonProperty(JSON_PROPERTY_VALUE_LIMIT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getValueLimit() {
+ return valueLimit;
+ }
+
+ public void setValueLimit(Long valueLimit) {
+ this.valueLimit = valueLimit;
+ }
+
+ /**
+ * 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 ObservabilityPipelineTagCardinalityLimitProcessor
+ */
+ @JsonAnySetter
+ public ObservabilityPipelineTagCardinalityLimitProcessor 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 ObservabilityPipelineTagCardinalityLimitProcessor object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ObservabilityPipelineTagCardinalityLimitProcessor
+ observabilityPipelineTagCardinalityLimitProcessor =
+ (ObservabilityPipelineTagCardinalityLimitProcessor) o;
+ return Objects.equals(
+ this.displayName, observabilityPipelineTagCardinalityLimitProcessor.displayName)
+ && Objects.equals(this.enabled, observabilityPipelineTagCardinalityLimitProcessor.enabled)
+ && Objects.equals(this.id, observabilityPipelineTagCardinalityLimitProcessor.id)
+ && Objects.equals(this.include, observabilityPipelineTagCardinalityLimitProcessor.include)
+ && Objects.equals(
+ this.limitExceededAction,
+ observabilityPipelineTagCardinalityLimitProcessor.limitExceededAction)
+ && Objects.equals(
+ this.perMetricLimits, observabilityPipelineTagCardinalityLimitProcessor.perMetricLimits)
+ && Objects.equals(this.type, observabilityPipelineTagCardinalityLimitProcessor.type)
+ && Objects.equals(
+ this.valueLimit, observabilityPipelineTagCardinalityLimitProcessor.valueLimit)
+ && Objects.equals(
+ this.additionalProperties,
+ observabilityPipelineTagCardinalityLimitProcessor.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ displayName,
+ enabled,
+ id,
+ include,
+ limitExceededAction,
+ perMetricLimits,
+ type,
+ valueLimit,
+ additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ObservabilityPipelineTagCardinalityLimitProcessor {\n");
+ sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n");
+ sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n");
+ sb.append(" id: ").append(toIndentedString(id)).append("\n");
+ sb.append(" include: ").append(toIndentedString(include)).append("\n");
+ sb.append(" limitExceededAction: ")
+ .append(toIndentedString(limitExceededAction))
+ .append("\n");
+ sb.append(" perMetricLimits: ").append(toIndentedString(perMetricLimits)).append("\n");
+ sb.append(" type: ").append(toIndentedString(type)).append("\n");
+ sb.append(" valueLimit: ").append(toIndentedString(valueLimit)).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/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorAction.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorAction.java
new file mode 100644
index 00000000000..2407a428672
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorAction.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.v2.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** The action to take when the cardinality limit is exceeded. */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineTagCardinalityLimitProcessorAction
+ .ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer.class)
+public class ObservabilityPipelineTagCardinalityLimitProcessorAction extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("drop_tag", "drop_event"));
+
+ public static final ObservabilityPipelineTagCardinalityLimitProcessorAction DROP_TAG =
+ new ObservabilityPipelineTagCardinalityLimitProcessorAction("drop_tag");
+ public static final ObservabilityPipelineTagCardinalityLimitProcessorAction DROP_EVENT =
+ new ObservabilityPipelineTagCardinalityLimitProcessorAction("drop_event");
+
+ ObservabilityPipelineTagCardinalityLimitProcessorAction(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorActionSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineTagCardinalityLimitProcessorAction value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineTagCardinalityLimitProcessorAction fromValue(String value) {
+ return new ObservabilityPipelineTagCardinalityLimitProcessorAction(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.java
new file mode 100644
index 00000000000..583762bf642
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.java
@@ -0,0 +1,313 @@
+/*
+ * 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.v2.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;
+
+/** A cardinality override applied to a specific metric. */
+@JsonPropertyOrder({
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit
+ .JSON_PROPERTY_LIMIT_EXCEEDED_ACTION,
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_METRIC_NAME,
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_MODE,
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_PER_TAG_LIMITS,
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.JSON_PROPERTY_VALUE_LIMIT
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_LIMIT_EXCEEDED_ACTION = "limit_exceeded_action";
+ private ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction;
+
+ public static final String JSON_PROPERTY_METRIC_NAME = "metric_name";
+ private String metricName;
+
+ public static final String JSON_PROPERTY_MODE = "mode";
+ private ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode;
+
+ public static final String JSON_PROPERTY_PER_TAG_LIMITS = "per_tag_limits";
+ private List perTagLimits = null;
+
+ public static final String JSON_PROPERTY_VALUE_LIMIT = "value_limit";
+ private Long valueLimit;
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit() {}
+
+ @JsonCreator
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit(
+ @JsonProperty(required = true, value = JSON_PROPERTY_LIMIT_EXCEEDED_ACTION)
+ ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction,
+ @JsonProperty(required = true, value = JSON_PROPERTY_METRIC_NAME) String metricName,
+ @JsonProperty(required = true, value = JSON_PROPERTY_MODE)
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode,
+ @JsonProperty(required = true, value = JSON_PROPERTY_VALUE_LIMIT) Long valueLimit) {
+ this.limitExceededAction = limitExceededAction;
+ this.unparsed |= !limitExceededAction.isValid();
+ this.metricName = metricName;
+ this.mode = mode;
+ this.unparsed |= !mode.isValid();
+ this.valueLimit = valueLimit;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit limitExceededAction(
+ ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) {
+ this.limitExceededAction = limitExceededAction;
+ this.unparsed |= !limitExceededAction.isValid();
+ return this;
+ }
+
+ /**
+ * The action to take when the cardinality limit is exceeded.
+ *
+ * @return limitExceededAction
+ */
+ @JsonProperty(JSON_PROPERTY_LIMIT_EXCEEDED_ACTION)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineTagCardinalityLimitProcessorAction getLimitExceededAction() {
+ return limitExceededAction;
+ }
+
+ public void setLimitExceededAction(
+ ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction) {
+ if (!limitExceededAction.isValid()) {
+ this.unparsed = true;
+ }
+ this.limitExceededAction = limitExceededAction;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit metricName(
+ String metricName) {
+ this.metricName = metricName;
+ return this;
+ }
+
+ /**
+ * The name of the metric this override applies to.
+ *
+ * @return metricName
+ */
+ @JsonProperty(JSON_PROPERTY_METRIC_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getMetricName() {
+ return metricName;
+ }
+
+ public void setMetricName(String metricName) {
+ this.metricName = metricName;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit mode(
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode) {
+ this.mode = mode;
+ this.unparsed |= !mode.isValid();
+ return this;
+ }
+
+ /**
+ * How the per-metric override is applied. tracked enforces a custom limit;
+ * excluded skips the metric entirely.
+ *
+ * @return mode
+ */
+ @JsonProperty(JSON_PROPERTY_MODE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode getMode() {
+ return mode;
+ }
+
+ public void setMode(ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode mode) {
+ if (!mode.isValid()) {
+ this.unparsed = true;
+ }
+ this.mode = mode;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit perTagLimits(
+ List perTagLimits) {
+ this.perTagLimits = perTagLimits;
+ for (ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit item : perTagLimits) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit addPerTagLimitsItem(
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit perTagLimitsItem) {
+ if (this.perTagLimits == null) {
+ this.perTagLimits = new ArrayList<>();
+ }
+ this.perTagLimits.add(perTagLimitsItem);
+ this.unparsed |= perTagLimitsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * A list of per-tag cardinality overrides that apply within this metric.
+ *
+ * @return perTagLimits
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PER_TAG_LIMITS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public List getPerTagLimits() {
+ return perTagLimits;
+ }
+
+ public void setPerTagLimits(
+ List perTagLimits) {
+ this.perTagLimits = perTagLimits;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit valueLimit(
+ Long valueLimit) {
+ this.valueLimit = valueLimit;
+ return this;
+ }
+
+ /**
+ * The maximum number of distinct tag value combinations allowed for this metric. minimum: 0
+ * maximum: 1000000
+ *
+ * @return valueLimit
+ */
+ @JsonProperty(JSON_PROPERTY_VALUE_LIMIT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getValueLimit() {
+ return valueLimit;
+ }
+
+ public void setValueLimit(Long valueLimit) {
+ this.valueLimit = valueLimit;
+ }
+
+ /**
+ * 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 ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit
+ */
+ @JsonAnySetter
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit 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 ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit object is
+ * equal to o.
+ */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit
+ observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit =
+ (ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit) o;
+ return Objects.equals(
+ this.limitExceededAction,
+ observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.limitExceededAction)
+ && Objects.equals(
+ this.metricName,
+ observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.metricName)
+ && Objects.equals(
+ this.mode, observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.mode)
+ && Objects.equals(
+ this.perTagLimits,
+ observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.perTagLimits)
+ && Objects.equals(
+ this.valueLimit,
+ observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.valueLimit)
+ && Objects.equals(
+ this.additionalProperties,
+ observabilityPipelineTagCardinalityLimitProcessorPerMetricLimit.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ limitExceededAction, metricName, mode, perTagLimits, valueLimit, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit {\n");
+ sb.append(" limitExceededAction: ")
+ .append(toIndentedString(limitExceededAction))
+ .append("\n");
+ sb.append(" metricName: ").append(toIndentedString(metricName)).append("\n");
+ sb.append(" mode: ").append(toIndentedString(mode)).append("\n");
+ sb.append(" perTagLimits: ").append(toIndentedString(perTagLimits)).append("\n");
+ sb.append(" valueLimit: ").append(toIndentedString(valueLimit)).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/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.java
new file mode 100644
index 00000000000..494fce07c65
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode.java
@@ -0,0 +1,70 @@
+/*
+ * 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.v2.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;
+
+/**
+ * How the per-metric override is applied. tracked enforces a custom limit;
+ * excluded skips the metric entirely.
+ */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode
+ .ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer.class)
+public class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode
+ extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("tracked", "excluded"));
+
+ public static final ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode TRACKED =
+ new ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode("tracked");
+ public static final ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode EXCLUDED =
+ new ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode("excluded");
+
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerMetricModeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode fromValue(
+ String value) {
+ return new ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.java
new file mode 100644
index 00000000000..aee605f12fb
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.java
@@ -0,0 +1,221 @@
+/*
+ * 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.v2.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 cardinality override for a specific tag key within a per-metric limit. */
+@JsonPropertyOrder({
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.JSON_PROPERTY_MODE,
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.JSON_PROPERTY_TAG_KEY,
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit.JSON_PROPERTY_VALUE_LIMIT
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_MODE = "mode";
+ private ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode;
+
+ public static final String JSON_PROPERTY_TAG_KEY = "tag_key";
+ private String tagKey;
+
+ public static final String JSON_PROPERTY_VALUE_LIMIT = "value_limit";
+ private Long valueLimit;
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit() {}
+
+ @JsonCreator
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit(
+ @JsonProperty(required = true, value = JSON_PROPERTY_MODE)
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TAG_KEY) String tagKey,
+ @JsonProperty(required = true, value = JSON_PROPERTY_VALUE_LIMIT) Long valueLimit) {
+ this.mode = mode;
+ this.unparsed |= !mode.isValid();
+ this.tagKey = tagKey;
+ this.valueLimit = valueLimit;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit mode(
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode) {
+ this.mode = mode;
+ this.unparsed |= !mode.isValid();
+ return this;
+ }
+
+ /**
+ * How the per-tag override is applied. limit_override enforces a custom limit on the
+ * tag; excluded skips the tag from cardinality tracking.
+ *
+ * @return mode
+ */
+ @JsonProperty(JSON_PROPERTY_MODE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode getMode() {
+ return mode;
+ }
+
+ public void setMode(ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode mode) {
+ if (!mode.isValid()) {
+ this.unparsed = true;
+ }
+ this.mode = mode;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit tagKey(String tagKey) {
+ this.tagKey = tagKey;
+ return this;
+ }
+
+ /**
+ * The tag key this override applies to.
+ *
+ * @return tagKey
+ */
+ @JsonProperty(JSON_PROPERTY_TAG_KEY)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getTagKey() {
+ return tagKey;
+ }
+
+ public void setTagKey(String tagKey) {
+ this.tagKey = tagKey;
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit valueLimit(Long valueLimit) {
+ this.valueLimit = valueLimit;
+ return this;
+ }
+
+ /**
+ * The maximum number of distinct values allowed for this tag. minimum: 0 maximum: 1000000
+ *
+ * @return valueLimit
+ */
+ @JsonProperty(JSON_PROPERTY_VALUE_LIMIT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getValueLimit() {
+ return valueLimit;
+ }
+
+ public void setValueLimit(Long valueLimit) {
+ this.valueLimit = valueLimit;
+ }
+
+ /**
+ * 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 ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit
+ */
+ @JsonAnySetter
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit 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 ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit object is
+ * equal to o.
+ */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit
+ observabilityPipelineTagCardinalityLimitProcessorPerTagLimit =
+ (ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit) o;
+ return Objects.equals(
+ this.mode, observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.mode)
+ && Objects.equals(
+ this.tagKey, observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.tagKey)
+ && Objects.equals(
+ this.valueLimit,
+ observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.valueLimit)
+ && Objects.equals(
+ this.additionalProperties,
+ observabilityPipelineTagCardinalityLimitProcessorPerTagLimit.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mode, tagKey, valueLimit, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit {\n");
+ sb.append(" mode: ").append(toIndentedString(mode)).append("\n");
+ sb.append(" tagKey: ").append(toIndentedString(tagKey)).append("\n");
+ sb.append(" valueLimit: ").append(toIndentedString(valueLimit)).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/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.java
new file mode 100644
index 00000000000..6ea8b34f1f9
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode.java
@@ -0,0 +1,69 @@
+/*
+ * 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.v2.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;
+
+/**
+ * How the per-tag override is applied. limit_override enforces a custom limit on the
+ * tag; excluded skips the tag from cardinality tracking.
+ */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode
+ .ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer.class)
+public class ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("limit_override", "excluded"));
+
+ public static final ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode LIMIT_OVERRIDE =
+ new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("limit_override");
+ public static final ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode EXCLUDED =
+ new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("excluded");
+
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode fromValue(
+ String value) {
+ return new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorType.java
new file mode 100644
index 00000000000..9c43ef65df4
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineTagCardinalityLimitProcessorType.java
@@ -0,0 +1,63 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** The processor type. The value must be tag_cardinality_limit. */
+@JsonSerialize(
+ using =
+ ObservabilityPipelineTagCardinalityLimitProcessorType
+ .ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer.class)
+public class ObservabilityPipelineTagCardinalityLimitProcessorType extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("tag_cardinality_limit"));
+
+ public static final ObservabilityPipelineTagCardinalityLimitProcessorType TAG_CARDINALITY_LIMIT =
+ new ObservabilityPipelineTagCardinalityLimitProcessorType("tag_cardinality_limit");
+
+ ObservabilityPipelineTagCardinalityLimitProcessorType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer
+ extends StdSerializer {
+ public ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public ObservabilityPipelineTagCardinalityLimitProcessorTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ ObservabilityPipelineTagCardinalityLimitProcessorType value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static ObservabilityPipelineTagCardinalityLimitProcessorType fromValue(String value) {
+ return new ObservabilityPipelineTagCardinalityLimitProcessorType(value);
+ }
+}