diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index f3ca46bc048..24e99fe17f7 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -36203,7 +36203,8 @@ components: type: object ObservabilityPipelineEnrichmentTableProcessor: description: The `enrichment_table` processor enriches logs using a static CSV - file or GeoIP database. + file, GeoIP database, or reference table. Exactly one of `file`, `geoip`, + or `reference_table` must be configured. properties: display_name: $ref: '#/components/schemas/ObservabilityPipelineComponentDisplayName' @@ -36224,6 +36225,8 @@ components: targets. example: source:my-source type: string + reference_table: + $ref: '#/components/schemas/ObservabilityPipelineEnrichmentTableReferenceTable' target: description: Path where enrichment results should be stored in the log. example: enriched.geoip @@ -36246,6 +36249,34 @@ components: type: string x-enum-varnames: - ENRICHMENT_TABLE + ObservabilityPipelineEnrichmentTableReferenceTable: + description: Uses a Datadog reference table to enrich logs. + properties: + app_key_key: + default: PROCESSOR_ENRICHMENT_TABLES_APP_KEY + description: Environment variable name containing the application key used + for reference table authentication. + type: string + columns: + description: List of column names to include from the reference table. If + not provided, all columns are included. + items: + type: string + nullable: true + type: array + key_field: + description: Path to the field in the log event to match against the reference + table. + example: log.user.id + type: string + table_id: + description: The unique identifier of the reference table. + example: 550e8400-e29b-41d4-a716-446655440000 + type: string + required: + - key_field + - table_id + type: object ObservabilityPipelineFieldValue: description: Represents a static key-value pair used in various processors. properties: diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineEnrichmentTableProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineEnrichmentTableProcessor.java index e19f2eb045c..51bd0b9b58b 100644 --- a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineEnrichmentTableProcessor.java +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineEnrichmentTableProcessor.java @@ -18,8 +18,9 @@ import java.util.Objects; /** - * The enrichment_table processor enriches logs using a static CSV file or GeoIP - * database. + * The enrichment_table processor enriches logs using a static CSV file, GeoIP + * database, or reference table. Exactly one of file, geoip, or + * reference_table must be configured. */ @JsonPropertyOrder({ ObservabilityPipelineEnrichmentTableProcessor.JSON_PROPERTY_DISPLAY_NAME, @@ -28,6 +29,7 @@ ObservabilityPipelineEnrichmentTableProcessor.JSON_PROPERTY_GEOIP, ObservabilityPipelineEnrichmentTableProcessor.JSON_PROPERTY_ID, ObservabilityPipelineEnrichmentTableProcessor.JSON_PROPERTY_INCLUDE, + ObservabilityPipelineEnrichmentTableProcessor.JSON_PROPERTY_REFERENCE_TABLE, ObservabilityPipelineEnrichmentTableProcessor.JSON_PROPERTY_TARGET, ObservabilityPipelineEnrichmentTableProcessor.JSON_PROPERTY_TYPE }) @@ -53,6 +55,9 @@ public class ObservabilityPipelineEnrichmentTableProcessor { public static final String JSON_PROPERTY_INCLUDE = "include"; private String include; + public static final String JSON_PROPERTY_REFERENCE_TABLE = "reference_table"; + private ObservabilityPipelineEnrichmentTableReferenceTable referenceTable; + public static final String JSON_PROPERTY_TARGET = "target"; private String target; @@ -205,6 +210,29 @@ public void setInclude(String include) { this.include = include; } + public ObservabilityPipelineEnrichmentTableProcessor referenceTable( + ObservabilityPipelineEnrichmentTableReferenceTable referenceTable) { + this.referenceTable = referenceTable; + this.unparsed |= referenceTable.unparsed; + return this; + } + + /** + * Uses a Datadog reference table to enrich logs. + * + * @return referenceTable + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REFERENCE_TABLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ObservabilityPipelineEnrichmentTableReferenceTable getReferenceTable() { + return referenceTable; + } + + public void setReferenceTable(ObservabilityPipelineEnrichmentTableReferenceTable referenceTable) { + this.referenceTable = referenceTable; + } + public ObservabilityPipelineEnrichmentTableProcessor target(String target) { this.target = target; return this; @@ -315,6 +343,8 @@ public boolean equals(Object o) { && Objects.equals(this.geoip, observabilityPipelineEnrichmentTableProcessor.geoip) && Objects.equals(this.id, observabilityPipelineEnrichmentTableProcessor.id) && Objects.equals(this.include, observabilityPipelineEnrichmentTableProcessor.include) + && Objects.equals( + this.referenceTable, observabilityPipelineEnrichmentTableProcessor.referenceTable) && Objects.equals(this.target, observabilityPipelineEnrichmentTableProcessor.target) && Objects.equals(this.type, observabilityPipelineEnrichmentTableProcessor.type) && Objects.equals( @@ -325,7 +355,16 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( - displayName, enabled, file, geoip, id, include, target, type, additionalProperties); + displayName, + enabled, + file, + geoip, + id, + include, + referenceTable, + target, + type, + additionalProperties); } @Override @@ -338,6 +377,7 @@ public String toString() { sb.append(" geoip: ").append(toIndentedString(geoip)).append("\n"); sb.append(" id: ").append(toIndentedString(id)).append("\n"); sb.append(" include: ").append(toIndentedString(include)).append("\n"); + sb.append(" referenceTable: ").append(toIndentedString(referenceTable)).append("\n"); sb.append(" target: ").append(toIndentedString(target)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); sb.append(" additionalProperties: ") diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineEnrichmentTableReferenceTable.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineEnrichmentTableReferenceTable.java new file mode 100644 index 00000000000..c22c46c663a --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineEnrichmentTableReferenceTable.java @@ -0,0 +1,263 @@ +/* + * 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; +import org.openapitools.jackson.nullable.JsonNullable; + +/** Uses a Datadog reference table to enrich logs. */ +@JsonPropertyOrder({ + ObservabilityPipelineEnrichmentTableReferenceTable.JSON_PROPERTY_APP_KEY_KEY, + ObservabilityPipelineEnrichmentTableReferenceTable.JSON_PROPERTY_COLUMNS, + ObservabilityPipelineEnrichmentTableReferenceTable.JSON_PROPERTY_KEY_FIELD, + ObservabilityPipelineEnrichmentTableReferenceTable.JSON_PROPERTY_TABLE_ID +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineEnrichmentTableReferenceTable { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_APP_KEY_KEY = "app_key_key"; + private String appKeyKey = "PROCESSOR_ENRICHMENT_TABLES_APP_KEY"; + + public static final String JSON_PROPERTY_COLUMNS = "columns"; + private JsonNullable> columns = JsonNullable.>undefined(); + + public static final String JSON_PROPERTY_KEY_FIELD = "key_field"; + private String keyField; + + public static final String JSON_PROPERTY_TABLE_ID = "table_id"; + private String tableId; + + public ObservabilityPipelineEnrichmentTableReferenceTable() {} + + @JsonCreator + public ObservabilityPipelineEnrichmentTableReferenceTable( + @JsonProperty(required = true, value = JSON_PROPERTY_KEY_FIELD) String keyField, + @JsonProperty(required = true, value = JSON_PROPERTY_TABLE_ID) String tableId) { + this.keyField = keyField; + this.tableId = tableId; + } + + public ObservabilityPipelineEnrichmentTableReferenceTable appKeyKey(String appKeyKey) { + this.appKeyKey = appKeyKey; + return this; + } + + /** + * Environment variable name containing the application key used for reference table + * authentication. + * + * @return appKeyKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_APP_KEY_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAppKeyKey() { + return appKeyKey; + } + + public void setAppKeyKey(String appKeyKey) { + this.appKeyKey = appKeyKey; + } + + public ObservabilityPipelineEnrichmentTableReferenceTable columns(List columns) { + this.columns = JsonNullable.>of(columns); + return this; + } + + public ObservabilityPipelineEnrichmentTableReferenceTable addColumnsItem(String columnsItem) { + if (this.columns == null || !this.columns.isPresent()) { + this.columns = JsonNullable.>of(new ArrayList<>()); + } + try { + this.columns.get().add(columnsItem); + } catch (java.util.NoSuchElementException e) { + // this can never happen, as we make sure above that the value is present + } + return this; + } + + /** + * List of column names to include from the reference table. If not provided, all columns are + * included. + * + * @return columns + */ + @jakarta.annotation.Nullable + @JsonIgnore + public List getColumns() { + return columns.orElse(null); + } + + @JsonProperty(JSON_PROPERTY_COLUMNS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public JsonNullable> getColumns_JsonNullable() { + return columns; + } + + @JsonProperty(JSON_PROPERTY_COLUMNS) + public void setColumns_JsonNullable(JsonNullable> columns) { + this.columns = columns; + } + + public void setColumns(List columns) { + this.columns = JsonNullable.>of(columns); + } + + public ObservabilityPipelineEnrichmentTableReferenceTable keyField(String keyField) { + this.keyField = keyField; + return this; + } + + /** + * Path to the field in the log event to match against the reference table. + * + * @return keyField + */ + @JsonProperty(JSON_PROPERTY_KEY_FIELD) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getKeyField() { + return keyField; + } + + public void setKeyField(String keyField) { + this.keyField = keyField; + } + + public ObservabilityPipelineEnrichmentTableReferenceTable tableId(String tableId) { + this.tableId = tableId; + return this; + } + + /** + * The unique identifier of the reference table. + * + * @return tableId + */ + @JsonProperty(JSON_PROPERTY_TABLE_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTableId() { + return tableId; + } + + public void setTableId(String tableId) { + this.tableId = tableId; + } + + /** + * 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 ObservabilityPipelineEnrichmentTableReferenceTable + */ + @JsonAnySetter + public ObservabilityPipelineEnrichmentTableReferenceTable 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 ObservabilityPipelineEnrichmentTableReferenceTable object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineEnrichmentTableReferenceTable + observabilityPipelineEnrichmentTableReferenceTable = + (ObservabilityPipelineEnrichmentTableReferenceTable) o; + return Objects.equals( + this.appKeyKey, observabilityPipelineEnrichmentTableReferenceTable.appKeyKey) + && Objects.equals(this.columns, observabilityPipelineEnrichmentTableReferenceTable.columns) + && Objects.equals( + this.keyField, observabilityPipelineEnrichmentTableReferenceTable.keyField) + && Objects.equals(this.tableId, observabilityPipelineEnrichmentTableReferenceTable.tableId) + && Objects.equals( + this.additionalProperties, + observabilityPipelineEnrichmentTableReferenceTable.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(appKeyKey, columns, keyField, tableId, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineEnrichmentTableReferenceTable {\n"); + sb.append(" appKeyKey: ").append(toIndentedString(appKeyKey)).append("\n"); + sb.append(" columns: ").append(toIndentedString(columns)).append("\n"); + sb.append(" keyField: ").append(toIndentedString(keyField)).append("\n"); + sb.append(" tableId: ").append(toIndentedString(tableId)).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 "); + } +}