From 27597942c2fb7be83adf8abf5e21dac999e8079c Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Wed, 24 Jun 2026 12:40:00 +0000 Subject: [PATCH] Regenerate client from commit 9991619 of spec repo --- .generator/schemas/v2/openapi.yaml | 123 +++++ .../ValidatePipeline_337125830.java | 105 +++++ ...ObservabilityPipelineConfigSourceItem.java | 86 +++- .../ObservabilityPipelineWebsocketSource.java | 437 ++++++++++++++++++ ...tyPipelineWebsocketSourceAuthStrategy.java | 69 +++ ...servabilityPipelineWebsocketSourceTls.java | 330 +++++++++++++ ...lityPipelineWebsocketSourceTlsEnabled.java | 157 +++++++ ...PipelineWebsocketSourceTlsEnabledMode.java | 62 +++ ...elineWebsocketSourceTlsWithClientCert.java | 275 +++++++++++ ...eWebsocketSourceTlsWithClientCertMode.java | 63 +++ ...ervabilityPipelineWebsocketSourceType.java | 62 +++ ...rce_bearer_auth_returns_OK_response.freeze | 1 + ...ource_bearer_auth_returns_OK_response.json | 32 ++ .../v2/api/observability_pipelines.feature | 8 + 14 files changed, 1806 insertions(+), 4 deletions(-) create mode 100644 examples/v2/observability-pipelines/ValidatePipeline_337125830.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSource.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceAuthStrategy.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTls.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsEnabled.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsEnabledMode.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsWithClientCert.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsWithClientCertMode.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceType.java create mode 100644 src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.json diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index b1469c0ac20..4aae2c9851c 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -64152,6 +64152,7 @@ components: - $ref: "#/components/schemas/ObservabilityPipelineSplunkTcpSource" - $ref: "#/components/schemas/ObservabilityPipelineSumoLogicSource" - $ref: "#/components/schemas/ObservabilityPipelineSyslogNgSource" + - $ref: "#/components/schemas/ObservabilityPipelineWebsocketSource" - $ref: "#/components/schemas/ObservabilityPipelineOpentelemetrySource" ObservabilityPipelineCrowdStrikeNextGenSiemDestination: description: |- @@ -68808,6 +68809,128 @@ components: required: - crt_file type: object + ObservabilityPipelineWebsocketSource: + description: |- + The `websocket` source ingests logs from a WebSocket server using the `ws://` or `wss://` protocol. + + **Supported pipeline types:** logs. + properties: + auth_strategy: + $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceAuthStrategy" + custom_key: + description: Name of the environment variable or secret that holds the custom authorization header value. Used when `auth_strategy` is `custom`. + example: WS_AUTH_CUSTOM_HEADER + type: string + decoding: + $ref: "#/components/schemas/ObservabilityPipelineDecoding" + id: + description: The unique identifier for this component. + example: websocket-source + type: string + password_key: + description: Name of the environment variable or secret that holds the password. Used when `auth_strategy` is `basic`. + example: WS_AUTH_PASSWORD + type: string + tls: + $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTls" + token_key: + description: Name of the environment variable or secret that holds the bearer token. Used when `auth_strategy` is `bearer`. + example: WS_BEARER_TOKEN + type: string + type: + $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceType" + uri_key: + description: Name of the environment variable or secret that holds the WebSocket server URI (`ws://` or `wss://`). + example: WS_URI + type: string + username_key: + description: Name of the environment variable or secret that holds the username. Used when `auth_strategy` is `basic`. + example: WS_AUTH_USERNAME + type: string + required: + - id + - type + - decoding + - auth_strategy + type: object + x-pipeline-types: [logs] + ObservabilityPipelineWebsocketSourceAuthStrategy: + description: Authentication strategy for the WebSocket source connection. + enum: + - none + - basic + - bearer + - custom + example: bearer + type: string + x-enum-varnames: + - NONE + - BASIC + - BEARER + - CUSTOM + ObservabilityPipelineWebsocketSourceTls: + description: TLS configuration for the WebSocket source. Use `enabled` for standard `wss://` connections, or `with_client_cert` to present a client certificate for mutual TLS. + oneOf: + - $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsEnabled" + - $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsWithClientCert" + ObservabilityPipelineWebsocketSourceTlsEnabled: + description: TLS configuration that enables encryption without a client certificate. Use this for standard `wss://` connections that do not require mutual TLS. + properties: + mode: + $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsEnabledMode" + required: + - mode + type: object + ObservabilityPipelineWebsocketSourceTlsEnabledMode: + description: TLS mode. Must be `enabled`. + enum: + - enabled + example: enabled + type: string + x-enum-varnames: + - ENABLED + ObservabilityPipelineWebsocketSourceTlsWithClientCert: + description: TLS configuration that enables encryption and presents a client certificate for mutual TLS authentication. + properties: + ca_file: + description: Path to the Certificate Authority (CA) file used to validate the remote server's TLS certificate. + example: /path/to/ca.crt + type: string + crt_file: + description: Path to the TLS client certificate file used to identify this source to the remote server. + example: /path/to/client.crt + type: string + key_file: + description: Path to the private key file associated with the client certificate. + example: /path/to/client.key + type: string + key_pass_key: + description: Name of the environment variable or secret that holds the passphrase for the private key file. + example: WS_TLS_KEY_PASSPHRASE + type: string + mode: + $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsWithClientCertMode" + required: + - mode + - crt_file + type: object + ObservabilityPipelineWebsocketSourceTlsWithClientCertMode: + description: TLS mode. Must be `with_client_cert`. + enum: + - with_client_cert + example: with_client_cert + type: string + x-enum-varnames: + - WITH_CLIENT_CERT + ObservabilityPipelineWebsocketSourceType: + default: websocket + description: The source type. The value should always be `websocket`. + enum: + - websocket + example: websocket + type: string + x-enum-varnames: + - WEBSOCKET OktaAPIToken: description: The definition of the `OktaAPIToken` object. properties: diff --git a/examples/v2/observability-pipelines/ValidatePipeline_337125830.java b/examples/v2/observability-pipelines/ValidatePipeline_337125830.java new file mode 100644 index 00000000000..d0fe89b76be --- /dev/null +++ b/examples/v2/observability-pipelines/ValidatePipeline_337125830.java @@ -0,0 +1,105 @@ +// Validate an observability pipeline with websocket source bearer auth returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ObservabilityPipelinesApi; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfig; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigDestinationItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorGroup; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigSourceItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineDataAttributes; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestination; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestinationType; +import com.datadog.api.client.v2.model.ObservabilityPipelineDecoding; +import com.datadog.api.client.v2.model.ObservabilityPipelineFilterProcessor; +import com.datadog.api.client.v2.model.ObservabilityPipelineFilterProcessorType; +import com.datadog.api.client.v2.model.ObservabilityPipelineSpec; +import com.datadog.api.client.v2.model.ObservabilityPipelineSpecData; +import com.datadog.api.client.v2.model.ObservabilityPipelineWebsocketSource; +import com.datadog.api.client.v2.model.ObservabilityPipelineWebsocketSourceAuthStrategy; +import com.datadog.api.client.v2.model.ObservabilityPipelineWebsocketSourceTls; +import com.datadog.api.client.v2.model.ObservabilityPipelineWebsocketSourceTlsEnabled; +import com.datadog.api.client.v2.model.ObservabilityPipelineWebsocketSourceTlsEnabledMode; +import com.datadog.api.client.v2.model.ObservabilityPipelineWebsocketSourceType; +import com.datadog.api.client.v2.model.ValidationResponse; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ObservabilityPipelinesApi apiInstance = new ObservabilityPipelinesApi(defaultClient); + + ObservabilityPipelineSpec body = + new ObservabilityPipelineSpec() + .data( + new ObservabilityPipelineSpecData() + .attributes( + new ObservabilityPipelineDataAttributes() + .config( + new ObservabilityPipelineConfig() + .destinations( + Collections.singletonList( + new ObservabilityPipelineConfigDestinationItem( + new ObservabilityPipelineDatadogLogsDestination() + .id("datadog-logs-destination") + .inputs( + Collections.singletonList( + "my-processor-group")) + .type( + ObservabilityPipelineDatadogLogsDestinationType + .DATADOG_LOGS)))) + .processorGroups( + Collections.singletonList( + new ObservabilityPipelineConfigProcessorGroup() + .enabled(true) + .id("my-processor-group") + .include("service:my-service") + .inputs( + Collections.singletonList("websocket-source")) + .processors( + Collections.singletonList( + new ObservabilityPipelineConfigProcessorItem( + new ObservabilityPipelineFilterProcessor() + .enabled(true) + .id("filter-processor") + .include("status:error") + .type( + ObservabilityPipelineFilterProcessorType + .FILTER)))))) + .sources( + Collections.singletonList( + new ObservabilityPipelineConfigSourceItem( + new ObservabilityPipelineWebsocketSource() + .id("websocket-source") + .type( + ObservabilityPipelineWebsocketSourceType + .WEBSOCKET) + .decoding( + ObservabilityPipelineDecoding.DECODE_JSON) + .authStrategy( + ObservabilityPipelineWebsocketSourceAuthStrategy + .BEARER) + .tokenKey("WS_BEARER_TOKEN") + .uriKey("WS_URI") + .tls( + new ObservabilityPipelineWebsocketSourceTls( + new ObservabilityPipelineWebsocketSourceTlsEnabled() + .mode( + ObservabilityPipelineWebsocketSourceTlsEnabledMode + .ENABLED))))))) + .name("Pipeline with WebSocket Source")) + .type("pipelines")); + + try { + ValidationResponse result = apiInstance.validatePipeline(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling ObservabilityPipelinesApi#validatePipeline"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigSourceItem.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigSourceItem.java index 15957348145..6f9c5c2ac18 100644 --- a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigSourceItem.java +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigSourceItem.java @@ -869,6 +869,55 @@ public ObservabilityPipelineConfigSourceItem deserialize( e); } + // deserialize ObservabilityPipelineWebsocketSource + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineWebsocketSource.class.equals(Integer.class) + || ObservabilityPipelineWebsocketSource.class.equals(Long.class) + || ObservabilityPipelineWebsocketSource.class.equals(Float.class) + || ObservabilityPipelineWebsocketSource.class.equals(Double.class) + || ObservabilityPipelineWebsocketSource.class.equals(Boolean.class) + || ObservabilityPipelineWebsocketSource.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineWebsocketSource.class.equals(Integer.class) + || ObservabilityPipelineWebsocketSource.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineWebsocketSource.class.equals(Float.class) + || ObservabilityPipelineWebsocketSource.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineWebsocketSource.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineWebsocketSource.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()).readValueAs(ObservabilityPipelineWebsocketSource.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 (!((ObservabilityPipelineWebsocketSource) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'ObservabilityPipelineWebsocketSource'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'ObservabilityPipelineWebsocketSource'", + e); + } + // deserialize ObservabilityPipelineOpentelemetrySource try { boolean attemptParsing = true; @@ -1030,6 +1079,11 @@ public ObservabilityPipelineConfigSourceItem(ObservabilityPipelineSyslogNgSource setActualInstance(o); } + public ObservabilityPipelineConfigSourceItem(ObservabilityPipelineWebsocketSource o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + public ObservabilityPipelineConfigSourceItem(ObservabilityPipelineOpentelemetrySource o) { super("oneOf", Boolean.FALSE); setActualInstance(o); @@ -1083,6 +1137,9 @@ public ObservabilityPipelineConfigSourceItem(ObservabilityPipelineOpentelemetryS schemas.put( "ObservabilityPipelineSyslogNgSource", new GenericType() {}); + schemas.put( + "ObservabilityPipelineWebsocketSource", + new GenericType() {}); schemas.put( "ObservabilityPipelineOpentelemetrySource", new GenericType() {}); @@ -1105,7 +1162,8 @@ public Map getSchemas() { * ObservabilityPipelineLogstashSource, ObservabilityPipelineRsyslogSource, * ObservabilityPipelineSocketSource, ObservabilityPipelineSplunkHecSource, * ObservabilityPipelineSplunkTcpSource, ObservabilityPipelineSumoLogicSource, - * ObservabilityPipelineSyslogNgSource, ObservabilityPipelineOpentelemetrySource + * ObservabilityPipelineSyslogNgSource, ObservabilityPipelineWebsocketSource, + * ObservabilityPipelineOpentelemetrySource * *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a * composed schema (allOf, anyOf, oneOf). @@ -1192,6 +1250,11 @@ public void setActualInstance(Object instance) { super.setActualInstance(instance); return; } + if (JSON.isInstanceOf( + ObservabilityPipelineWebsocketSource.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } if (JSON.isInstanceOf( ObservabilityPipelineOpentelemetrySource.class, instance, new HashSet>())) { super.setActualInstance(instance); @@ -1211,7 +1274,8 @@ public void setActualInstance(Object instance) { + " ObservabilityPipelineLogstashSource, ObservabilityPipelineRsyslogSource," + " ObservabilityPipelineSocketSource, ObservabilityPipelineSplunkHecSource," + " ObservabilityPipelineSplunkTcpSource, ObservabilityPipelineSumoLogicSource," - + " ObservabilityPipelineSyslogNgSource, ObservabilityPipelineOpentelemetrySource"); + + " ObservabilityPipelineSyslogNgSource, ObservabilityPipelineWebsocketSource," + + " ObservabilityPipelineOpentelemetrySource"); } /** @@ -1223,7 +1287,8 @@ public void setActualInstance(Object instance) { * ObservabilityPipelineLogstashSource, ObservabilityPipelineRsyslogSource, * ObservabilityPipelineSocketSource, ObservabilityPipelineSplunkHecSource, * ObservabilityPipelineSplunkTcpSource, ObservabilityPipelineSumoLogicSource, - * ObservabilityPipelineSyslogNgSource, ObservabilityPipelineOpentelemetrySource + * ObservabilityPipelineSyslogNgSource, ObservabilityPipelineWebsocketSource, + * ObservabilityPipelineOpentelemetrySource * * @return The actual instance (ObservabilityPipelineDatadogAgentSource, * ObservabilityPipelineAmazonDataFirehoseSource, ObservabilityPipelineAmazonS3Source, @@ -1233,7 +1298,8 @@ public void setActualInstance(Object instance) { * ObservabilityPipelineLogstashSource, ObservabilityPipelineRsyslogSource, * ObservabilityPipelineSocketSource, ObservabilityPipelineSplunkHecSource, * ObservabilityPipelineSplunkTcpSource, ObservabilityPipelineSumoLogicSource, - * ObservabilityPipelineSyslogNgSource, ObservabilityPipelineOpentelemetrySource) + * ObservabilityPipelineSyslogNgSource, ObservabilityPipelineWebsocketSource, + * ObservabilityPipelineOpentelemetrySource) */ @Override public Object getActualInstance() { @@ -1434,6 +1500,18 @@ public ObservabilityPipelineSyslogNgSource getObservabilityPipelineSyslogNgSourc return (ObservabilityPipelineSyslogNgSource) super.getActualInstance(); } + /** + * Get the actual instance of `ObservabilityPipelineWebsocketSource`. If the actual instance is + * not `ObservabilityPipelineWebsocketSource`, the ClassCastException will be thrown. + * + * @return The actual instance of `ObservabilityPipelineWebsocketSource` + * @throws ClassCastException if the instance is not `ObservabilityPipelineWebsocketSource` + */ + public ObservabilityPipelineWebsocketSource getObservabilityPipelineWebsocketSource() + throws ClassCastException { + return (ObservabilityPipelineWebsocketSource) super.getActualInstance(); + } + /** * Get the actual instance of `ObservabilityPipelineOpentelemetrySource`. If the actual instance * is not `ObservabilityPipelineOpentelemetrySource`, the ClassCastException will be thrown. diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSource.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSource.java new file mode 100644 index 00000000000..57bc8ee4b09 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSource.java @@ -0,0 +1,437 @@ +/* + * 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 websocket source ingests logs from a WebSocket server using the ws:// + * or wss:// protocol. + * + *

Supported pipeline types: logs. + */ +@JsonPropertyOrder({ + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_AUTH_STRATEGY, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_CUSTOM_KEY, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_DECODING, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_ID, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_PASSWORD_KEY, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_TLS, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_TOKEN_KEY, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_TYPE, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_URI_KEY, + ObservabilityPipelineWebsocketSource.JSON_PROPERTY_USERNAME_KEY +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineWebsocketSource { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_AUTH_STRATEGY = "auth_strategy"; + private ObservabilityPipelineWebsocketSourceAuthStrategy authStrategy; + + public static final String JSON_PROPERTY_CUSTOM_KEY = "custom_key"; + private String customKey; + + public static final String JSON_PROPERTY_DECODING = "decoding"; + private ObservabilityPipelineDecoding decoding; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_PASSWORD_KEY = "password_key"; + private String passwordKey; + + public static final String JSON_PROPERTY_TLS = "tls"; + private ObservabilityPipelineWebsocketSourceTls tls; + + public static final String JSON_PROPERTY_TOKEN_KEY = "token_key"; + private String tokenKey; + + public static final String JSON_PROPERTY_TYPE = "type"; + private ObservabilityPipelineWebsocketSourceType type = + ObservabilityPipelineWebsocketSourceType.WEBSOCKET; + + public static final String JSON_PROPERTY_URI_KEY = "uri_key"; + private String uriKey; + + public static final String JSON_PROPERTY_USERNAME_KEY = "username_key"; + private String usernameKey; + + public ObservabilityPipelineWebsocketSource() {} + + @JsonCreator + public ObservabilityPipelineWebsocketSource( + @JsonProperty(required = true, value = JSON_PROPERTY_AUTH_STRATEGY) + ObservabilityPipelineWebsocketSourceAuthStrategy authStrategy, + @JsonProperty(required = true, value = JSON_PROPERTY_DECODING) + ObservabilityPipelineDecoding decoding, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ObservabilityPipelineWebsocketSourceType type) { + this.authStrategy = authStrategy; + this.unparsed |= !authStrategy.isValid(); + this.decoding = decoding; + this.unparsed |= !decoding.isValid(); + this.id = id; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ObservabilityPipelineWebsocketSource authStrategy( + ObservabilityPipelineWebsocketSourceAuthStrategy authStrategy) { + this.authStrategy = authStrategy; + this.unparsed |= !authStrategy.isValid(); + return this; + } + + /** + * Authentication strategy for the WebSocket source connection. + * + * @return authStrategy + */ + @JsonProperty(JSON_PROPERTY_AUTH_STRATEGY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineWebsocketSourceAuthStrategy getAuthStrategy() { + return authStrategy; + } + + public void setAuthStrategy(ObservabilityPipelineWebsocketSourceAuthStrategy authStrategy) { + if (!authStrategy.isValid()) { + this.unparsed = true; + } + this.authStrategy = authStrategy; + } + + public ObservabilityPipelineWebsocketSource customKey(String customKey) { + this.customKey = customKey; + return this; + } + + /** + * Name of the environment variable or secret that holds the custom authorization header value. + * Used when auth_strategy is custom. + * + * @return customKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CUSTOM_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getCustomKey() { + return customKey; + } + + public void setCustomKey(String customKey) { + this.customKey = customKey; + } + + public ObservabilityPipelineWebsocketSource decoding(ObservabilityPipelineDecoding decoding) { + this.decoding = decoding; + this.unparsed |= !decoding.isValid(); + return this; + } + + /** + * The decoding format used to interpret incoming logs. + * + * @return decoding + */ + @JsonProperty(JSON_PROPERTY_DECODING) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineDecoding getDecoding() { + return decoding; + } + + public void setDecoding(ObservabilityPipelineDecoding decoding) { + if (!decoding.isValid()) { + this.unparsed = true; + } + this.decoding = decoding; + } + + public ObservabilityPipelineWebsocketSource id(String id) { + this.id = id; + return this; + } + + /** + * The unique identifier for this component. + * + * @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 ObservabilityPipelineWebsocketSource passwordKey(String passwordKey) { + this.passwordKey = passwordKey; + return this; + } + + /** + * Name of the environment variable or secret that holds the password. Used when + * auth_strategy is basic. + * + * @return passwordKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PASSWORD_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPasswordKey() { + return passwordKey; + } + + public void setPasswordKey(String passwordKey) { + this.passwordKey = passwordKey; + } + + public ObservabilityPipelineWebsocketSource tls(ObservabilityPipelineWebsocketSourceTls tls) { + this.tls = tls; + this.unparsed |= tls.unparsed; + return this; + } + + /** + * TLS configuration for the WebSocket source. Use enabled for standard wss:// + * connections, or with_client_cert to present a client certificate for + * mutual TLS. + * + * @return tls + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ObservabilityPipelineWebsocketSourceTls getTls() { + return tls; + } + + public void setTls(ObservabilityPipelineWebsocketSourceTls tls) { + this.tls = tls; + } + + public ObservabilityPipelineWebsocketSource tokenKey(String tokenKey) { + this.tokenKey = tokenKey; + return this; + } + + /** + * Name of the environment variable or secret that holds the bearer token. Used when + * auth_strategy is bearer. + * + * @return tokenKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOKEN_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTokenKey() { + return tokenKey; + } + + public void setTokenKey(String tokenKey) { + this.tokenKey = tokenKey; + } + + public ObservabilityPipelineWebsocketSource type(ObservabilityPipelineWebsocketSourceType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The source type. The value should always be websocket. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineWebsocketSourceType getType() { + return type; + } + + public void setType(ObservabilityPipelineWebsocketSourceType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + public ObservabilityPipelineWebsocketSource uriKey(String uriKey) { + this.uriKey = uriKey; + return this; + } + + /** + * Name of the environment variable or secret that holds the WebSocket server URI (ws:// + * or wss://). + * + * @return uriKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_URI_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getUriKey() { + return uriKey; + } + + public void setUriKey(String uriKey) { + this.uriKey = uriKey; + } + + public ObservabilityPipelineWebsocketSource usernameKey(String usernameKey) { + this.usernameKey = usernameKey; + return this; + } + + /** + * Name of the environment variable or secret that holds the username. Used when + * auth_strategy is basic. + * + * @return usernameKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_USERNAME_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getUsernameKey() { + return usernameKey; + } + + public void setUsernameKey(String usernameKey) { + this.usernameKey = usernameKey; + } + + /** + * 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 ObservabilityPipelineWebsocketSource + */ + @JsonAnySetter + public ObservabilityPipelineWebsocketSource 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 ObservabilityPipelineWebsocketSource object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineWebsocketSource observabilityPipelineWebsocketSource = + (ObservabilityPipelineWebsocketSource) o; + return Objects.equals(this.authStrategy, observabilityPipelineWebsocketSource.authStrategy) + && Objects.equals(this.customKey, observabilityPipelineWebsocketSource.customKey) + && Objects.equals(this.decoding, observabilityPipelineWebsocketSource.decoding) + && Objects.equals(this.id, observabilityPipelineWebsocketSource.id) + && Objects.equals(this.passwordKey, observabilityPipelineWebsocketSource.passwordKey) + && Objects.equals(this.tls, observabilityPipelineWebsocketSource.tls) + && Objects.equals(this.tokenKey, observabilityPipelineWebsocketSource.tokenKey) + && Objects.equals(this.type, observabilityPipelineWebsocketSource.type) + && Objects.equals(this.uriKey, observabilityPipelineWebsocketSource.uriKey) + && Objects.equals(this.usernameKey, observabilityPipelineWebsocketSource.usernameKey) + && Objects.equals( + this.additionalProperties, observabilityPipelineWebsocketSource.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + authStrategy, + customKey, + decoding, + id, + passwordKey, + tls, + tokenKey, + type, + uriKey, + usernameKey, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineWebsocketSource {\n"); + sb.append(" authStrategy: ").append(toIndentedString(authStrategy)).append("\n"); + sb.append(" customKey: ").append(toIndentedString(customKey)).append("\n"); + sb.append(" decoding: ").append(toIndentedString(decoding)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" passwordKey: ").append(toIndentedString(passwordKey)).append("\n"); + sb.append(" tls: ").append(toIndentedString(tls)).append("\n"); + sb.append(" tokenKey: ").append(toIndentedString(tokenKey)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" uriKey: ").append(toIndentedString(uriKey)).append("\n"); + sb.append(" usernameKey: ").append(toIndentedString(usernameKey)).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/ObservabilityPipelineWebsocketSourceAuthStrategy.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceAuthStrategy.java new file mode 100644 index 00000000000..021e2522754 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceAuthStrategy.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; + +/** Authentication strategy for the WebSocket source connection. */ +@JsonSerialize( + using = + ObservabilityPipelineWebsocketSourceAuthStrategy + .ObservabilityPipelineWebsocketSourceAuthStrategySerializer.class) +public class ObservabilityPipelineWebsocketSourceAuthStrategy extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("none", "basic", "bearer", "custom")); + + public static final ObservabilityPipelineWebsocketSourceAuthStrategy NONE = + new ObservabilityPipelineWebsocketSourceAuthStrategy("none"); + public static final ObservabilityPipelineWebsocketSourceAuthStrategy BASIC = + new ObservabilityPipelineWebsocketSourceAuthStrategy("basic"); + public static final ObservabilityPipelineWebsocketSourceAuthStrategy BEARER = + new ObservabilityPipelineWebsocketSourceAuthStrategy("bearer"); + public static final ObservabilityPipelineWebsocketSourceAuthStrategy CUSTOM = + new ObservabilityPipelineWebsocketSourceAuthStrategy("custom"); + + ObservabilityPipelineWebsocketSourceAuthStrategy(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineWebsocketSourceAuthStrategySerializer + extends StdSerializer { + public ObservabilityPipelineWebsocketSourceAuthStrategySerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineWebsocketSourceAuthStrategySerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineWebsocketSourceAuthStrategy value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineWebsocketSourceAuthStrategy fromValue(String value) { + return new ObservabilityPipelineWebsocketSourceAuthStrategy(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTls.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTls.java new file mode 100644 index 00000000000..62a66081bcd --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTls.java @@ -0,0 +1,330 @@ +/* + * 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.AbstractOpenApiSchema; +import com.datadog.api.client.JSON; +import com.datadog.api.client.UnparsedObject; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import jakarta.ws.rs.core.GenericType; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +@JsonDeserialize( + using = + ObservabilityPipelineWebsocketSourceTls.ObservabilityPipelineWebsocketSourceTlsDeserializer + .class) +@JsonSerialize( + using = + ObservabilityPipelineWebsocketSourceTls.ObservabilityPipelineWebsocketSourceTlsSerializer + .class) +public class ObservabilityPipelineWebsocketSourceTls extends AbstractOpenApiSchema { + private static final Logger log = + Logger.getLogger(ObservabilityPipelineWebsocketSourceTls.class.getName()); + + @JsonIgnore public boolean unparsed = false; + + public static class ObservabilityPipelineWebsocketSourceTlsSerializer + extends StdSerializer { + public ObservabilityPipelineWebsocketSourceTlsSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineWebsocketSourceTlsSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineWebsocketSourceTls value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.getActualInstance()); + } + } + + public static class ObservabilityPipelineWebsocketSourceTlsDeserializer + extends StdDeserializer { + public ObservabilityPipelineWebsocketSourceTlsDeserializer() { + this(ObservabilityPipelineWebsocketSourceTls.class); + } + + public ObservabilityPipelineWebsocketSourceTlsDeserializer(Class vc) { + super(vc); + } + + @Override + public ObservabilityPipelineWebsocketSourceTls deserialize( + JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { + JsonNode tree = jp.readValueAsTree(); + Object deserialized = null; + Object tmp = null; + boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS); + int match = 0; + JsonToken token = tree.traverse(jp.getCodec()).nextToken(); + // deserialize ObservabilityPipelineWebsocketSourceTlsEnabled + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Integer.class) + || ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Long.class) + || ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Float.class) + || ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Double.class) + || ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Boolean.class) + || ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Integer.class) + || ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Float.class) + || ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals( + Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineWebsocketSourceTlsEnabled.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(ObservabilityPipelineWebsocketSourceTlsEnabled.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 (!((ObservabilityPipelineWebsocketSourceTlsEnabled) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'ObservabilityPipelineWebsocketSourceTlsEnabled'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'ObservabilityPipelineWebsocketSourceTlsEnabled'", + e); + } + + // deserialize ObservabilityPipelineWebsocketSourceTlsWithClientCert + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Integer.class) + || ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Long.class) + || ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Float.class) + || ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Double.class) + || ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Boolean.class) + || ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Integer.class) + || ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals( + Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Float.class) + || ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals( + Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (ObservabilityPipelineWebsocketSourceTlsWithClientCert.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(ObservabilityPipelineWebsocketSourceTlsWithClientCert.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 (!((ObservabilityPipelineWebsocketSourceTlsWithClientCert) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'ObservabilityPipelineWebsocketSourceTlsWithClientCert'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema" + + " 'ObservabilityPipelineWebsocketSourceTlsWithClientCert'", + e); + } + + ObservabilityPipelineWebsocketSourceTls ret = new ObservabilityPipelineWebsocketSourceTls(); + if (match == 1) { + ret.setActualInstance(deserialized); + } else { + Map res = + new ObjectMapper() + .readValue( + tree.traverse(jp.getCodec()).readValueAsTree().toString(), + new TypeReference>() {}); + ret.setActualInstance(new UnparsedObject(res)); + } + return ret; + } + + /** Handle deserialization of the 'null' value. */ + @Override + public ObservabilityPipelineWebsocketSourceTls getNullValue(DeserializationContext ctxt) + throws JsonMappingException { + throw new JsonMappingException( + ctxt.getParser(), "ObservabilityPipelineWebsocketSourceTls cannot be null"); + } + } + + // store a list of schema names defined in oneOf + public static final Map schemas = new HashMap(); + + public ObservabilityPipelineWebsocketSourceTls() { + super("oneOf", Boolean.FALSE); + } + + public ObservabilityPipelineWebsocketSourceTls(ObservabilityPipelineWebsocketSourceTlsEnabled o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + public ObservabilityPipelineWebsocketSourceTls( + ObservabilityPipelineWebsocketSourceTlsWithClientCert o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + static { + schemas.put( + "ObservabilityPipelineWebsocketSourceTlsEnabled", + new GenericType() {}); + schemas.put( + "ObservabilityPipelineWebsocketSourceTlsWithClientCert", + new GenericType() {}); + JSON.registerDescendants( + ObservabilityPipelineWebsocketSourceTls.class, Collections.unmodifiableMap(schemas)); + } + + @Override + public Map getSchemas() { + return ObservabilityPipelineWebsocketSourceTls.schemas; + } + + /** + * Set the instance that matches the oneOf child schema, check the instance parameter is valid + * against the oneOf child schemas: ObservabilityPipelineWebsocketSourceTlsEnabled, + * ObservabilityPipelineWebsocketSourceTlsWithClientCert + * + *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a + * composed schema (allOf, anyOf, oneOf). + */ + @Override + public void setActualInstance(Object instance) { + if (JSON.isInstanceOf( + ObservabilityPipelineWebsocketSourceTlsEnabled.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + if (JSON.isInstanceOf( + ObservabilityPipelineWebsocketSourceTlsWithClientCert.class, + instance, + new HashSet>())) { + super.setActualInstance(instance); + return; + } + + if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + throw new RuntimeException( + "Invalid instance type. Must be ObservabilityPipelineWebsocketSourceTlsEnabled," + + " ObservabilityPipelineWebsocketSourceTlsWithClientCert"); + } + + /** + * Get the actual instance, which can be the following: + * ObservabilityPipelineWebsocketSourceTlsEnabled, + * ObservabilityPipelineWebsocketSourceTlsWithClientCert + * + * @return The actual instance (ObservabilityPipelineWebsocketSourceTlsEnabled, + * ObservabilityPipelineWebsocketSourceTlsWithClientCert) + */ + @Override + public Object getActualInstance() { + return super.getActualInstance(); + } + + /** + * Get the actual instance of `ObservabilityPipelineWebsocketSourceTlsEnabled`. If the actual + * instance is not `ObservabilityPipelineWebsocketSourceTlsEnabled`, the ClassCastException will + * be thrown. + * + * @return The actual instance of `ObservabilityPipelineWebsocketSourceTlsEnabled` + * @throws ClassCastException if the instance is not + * `ObservabilityPipelineWebsocketSourceTlsEnabled` + */ + public ObservabilityPipelineWebsocketSourceTlsEnabled + getObservabilityPipelineWebsocketSourceTlsEnabled() throws ClassCastException { + return (ObservabilityPipelineWebsocketSourceTlsEnabled) super.getActualInstance(); + } + + /** + * Get the actual instance of `ObservabilityPipelineWebsocketSourceTlsWithClientCert`. If the + * actual instance is not `ObservabilityPipelineWebsocketSourceTlsWithClientCert`, the + * ClassCastException will be thrown. + * + * @return The actual instance of `ObservabilityPipelineWebsocketSourceTlsWithClientCert` + * @throws ClassCastException if the instance is not + * `ObservabilityPipelineWebsocketSourceTlsWithClientCert` + */ + public ObservabilityPipelineWebsocketSourceTlsWithClientCert + getObservabilityPipelineWebsocketSourceTlsWithClientCert() throws ClassCastException { + return (ObservabilityPipelineWebsocketSourceTlsWithClientCert) super.getActualInstance(); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsEnabled.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsEnabled.java new file mode 100644 index 00000000000..2b0c09d1d74 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsEnabled.java @@ -0,0 +1,157 @@ +/* + * 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; + +/** + * TLS configuration that enables encryption without a client certificate. Use this for standard + * wss:// connections that do not require mutual TLS. + */ +@JsonPropertyOrder({ObservabilityPipelineWebsocketSourceTlsEnabled.JSON_PROPERTY_MODE}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineWebsocketSourceTlsEnabled { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_MODE = "mode"; + private ObservabilityPipelineWebsocketSourceTlsEnabledMode mode; + + public ObservabilityPipelineWebsocketSourceTlsEnabled() {} + + @JsonCreator + public ObservabilityPipelineWebsocketSourceTlsEnabled( + @JsonProperty(required = true, value = JSON_PROPERTY_MODE) + ObservabilityPipelineWebsocketSourceTlsEnabledMode mode) { + this.mode = mode; + this.unparsed |= !mode.isValid(); + } + + public ObservabilityPipelineWebsocketSourceTlsEnabled mode( + ObservabilityPipelineWebsocketSourceTlsEnabledMode mode) { + this.mode = mode; + this.unparsed |= !mode.isValid(); + return this; + } + + /** + * TLS mode. Must be enabled. + * + * @return mode + */ + @JsonProperty(JSON_PROPERTY_MODE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineWebsocketSourceTlsEnabledMode getMode() { + return mode; + } + + public void setMode(ObservabilityPipelineWebsocketSourceTlsEnabledMode mode) { + if (!mode.isValid()) { + this.unparsed = true; + } + this.mode = mode; + } + + /** + * 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 ObservabilityPipelineWebsocketSourceTlsEnabled + */ + @JsonAnySetter + public ObservabilityPipelineWebsocketSourceTlsEnabled 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 ObservabilityPipelineWebsocketSourceTlsEnabled object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineWebsocketSourceTlsEnabled observabilityPipelineWebsocketSourceTlsEnabled = + (ObservabilityPipelineWebsocketSourceTlsEnabled) o; + return Objects.equals(this.mode, observabilityPipelineWebsocketSourceTlsEnabled.mode) + && Objects.equals( + this.additionalProperties, + observabilityPipelineWebsocketSourceTlsEnabled.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(mode, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineWebsocketSourceTlsEnabled {\n"); + sb.append(" mode: ").append(toIndentedString(mode)).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/ObservabilityPipelineWebsocketSourceTlsEnabledMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsEnabledMode.java new file mode 100644 index 00000000000..3e3e2bad2b6 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsEnabledMode.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; + +/** TLS mode. Must be enabled. */ +@JsonSerialize( + using = + ObservabilityPipelineWebsocketSourceTlsEnabledMode + .ObservabilityPipelineWebsocketSourceTlsEnabledModeSerializer.class) +public class ObservabilityPipelineWebsocketSourceTlsEnabledMode extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("enabled")); + + public static final ObservabilityPipelineWebsocketSourceTlsEnabledMode ENABLED = + new ObservabilityPipelineWebsocketSourceTlsEnabledMode("enabled"); + + ObservabilityPipelineWebsocketSourceTlsEnabledMode(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineWebsocketSourceTlsEnabledModeSerializer + extends StdSerializer { + public ObservabilityPipelineWebsocketSourceTlsEnabledModeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineWebsocketSourceTlsEnabledModeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineWebsocketSourceTlsEnabledMode value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineWebsocketSourceTlsEnabledMode fromValue(String value) { + return new ObservabilityPipelineWebsocketSourceTlsEnabledMode(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsWithClientCert.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsWithClientCert.java new file mode 100644 index 00000000000..b683eb4f74c --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsWithClientCert.java @@ -0,0 +1,275 @@ +/* + * 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; + +/** + * TLS configuration that enables encryption and presents a client certificate for mutual TLS + * authentication. + */ +@JsonPropertyOrder({ + ObservabilityPipelineWebsocketSourceTlsWithClientCert.JSON_PROPERTY_CA_FILE, + ObservabilityPipelineWebsocketSourceTlsWithClientCert.JSON_PROPERTY_CRT_FILE, + ObservabilityPipelineWebsocketSourceTlsWithClientCert.JSON_PROPERTY_KEY_FILE, + ObservabilityPipelineWebsocketSourceTlsWithClientCert.JSON_PROPERTY_KEY_PASS_KEY, + ObservabilityPipelineWebsocketSourceTlsWithClientCert.JSON_PROPERTY_MODE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineWebsocketSourceTlsWithClientCert { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CA_FILE = "ca_file"; + private String caFile; + + public static final String JSON_PROPERTY_CRT_FILE = "crt_file"; + private String crtFile; + + public static final String JSON_PROPERTY_KEY_FILE = "key_file"; + private String keyFile; + + public static final String JSON_PROPERTY_KEY_PASS_KEY = "key_pass_key"; + private String keyPassKey; + + public static final String JSON_PROPERTY_MODE = "mode"; + private ObservabilityPipelineWebsocketSourceTlsWithClientCertMode mode; + + public ObservabilityPipelineWebsocketSourceTlsWithClientCert() {} + + @JsonCreator + public ObservabilityPipelineWebsocketSourceTlsWithClientCert( + @JsonProperty(required = true, value = JSON_PROPERTY_CRT_FILE) String crtFile, + @JsonProperty(required = true, value = JSON_PROPERTY_MODE) + ObservabilityPipelineWebsocketSourceTlsWithClientCertMode mode) { + this.crtFile = crtFile; + this.mode = mode; + this.unparsed |= !mode.isValid(); + } + + public ObservabilityPipelineWebsocketSourceTlsWithClientCert caFile(String caFile) { + this.caFile = caFile; + return this; + } + + /** + * Path to the Certificate Authority (CA) file used to validate the remote server's TLS + * certificate. + * + * @return caFile + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CA_FILE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getCaFile() { + return caFile; + } + + public void setCaFile(String caFile) { + this.caFile = caFile; + } + + public ObservabilityPipelineWebsocketSourceTlsWithClientCert crtFile(String crtFile) { + this.crtFile = crtFile; + return this; + } + + /** + * Path to the TLS client certificate file used to identify this source to the remote server. + * + * @return crtFile + */ + @JsonProperty(JSON_PROPERTY_CRT_FILE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getCrtFile() { + return crtFile; + } + + public void setCrtFile(String crtFile) { + this.crtFile = crtFile; + } + + public ObservabilityPipelineWebsocketSourceTlsWithClientCert keyFile(String keyFile) { + this.keyFile = keyFile; + return this; + } + + /** + * Path to the private key file associated with the client certificate. + * + * @return keyFile + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_KEY_FILE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getKeyFile() { + return keyFile; + } + + public void setKeyFile(String keyFile) { + this.keyFile = keyFile; + } + + public ObservabilityPipelineWebsocketSourceTlsWithClientCert keyPassKey(String keyPassKey) { + this.keyPassKey = keyPassKey; + return this; + } + + /** + * Name of the environment variable or secret that holds the passphrase for the private key file. + * + * @return keyPassKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_KEY_PASS_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getKeyPassKey() { + return keyPassKey; + } + + public void setKeyPassKey(String keyPassKey) { + this.keyPassKey = keyPassKey; + } + + public ObservabilityPipelineWebsocketSourceTlsWithClientCert mode( + ObservabilityPipelineWebsocketSourceTlsWithClientCertMode mode) { + this.mode = mode; + this.unparsed |= !mode.isValid(); + return this; + } + + /** + * TLS mode. Must be with_client_cert. + * + * @return mode + */ + @JsonProperty(JSON_PROPERTY_MODE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ObservabilityPipelineWebsocketSourceTlsWithClientCertMode getMode() { + return mode; + } + + public void setMode(ObservabilityPipelineWebsocketSourceTlsWithClientCertMode mode) { + if (!mode.isValid()) { + this.unparsed = true; + } + this.mode = mode; + } + + /** + * 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 ObservabilityPipelineWebsocketSourceTlsWithClientCert + */ + @JsonAnySetter + public ObservabilityPipelineWebsocketSourceTlsWithClientCert 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 ObservabilityPipelineWebsocketSourceTlsWithClientCert object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineWebsocketSourceTlsWithClientCert + observabilityPipelineWebsocketSourceTlsWithClientCert = + (ObservabilityPipelineWebsocketSourceTlsWithClientCert) o; + return Objects.equals(this.caFile, observabilityPipelineWebsocketSourceTlsWithClientCert.caFile) + && Objects.equals( + this.crtFile, observabilityPipelineWebsocketSourceTlsWithClientCert.crtFile) + && Objects.equals( + this.keyFile, observabilityPipelineWebsocketSourceTlsWithClientCert.keyFile) + && Objects.equals( + this.keyPassKey, observabilityPipelineWebsocketSourceTlsWithClientCert.keyPassKey) + && Objects.equals(this.mode, observabilityPipelineWebsocketSourceTlsWithClientCert.mode) + && Objects.equals( + this.additionalProperties, + observabilityPipelineWebsocketSourceTlsWithClientCert.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(caFile, crtFile, keyFile, keyPassKey, mode, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineWebsocketSourceTlsWithClientCert {\n"); + sb.append(" caFile: ").append(toIndentedString(caFile)).append("\n"); + sb.append(" crtFile: ").append(toIndentedString(crtFile)).append("\n"); + sb.append(" keyFile: ").append(toIndentedString(keyFile)).append("\n"); + sb.append(" keyPassKey: ").append(toIndentedString(keyPassKey)).append("\n"); + sb.append(" mode: ").append(toIndentedString(mode)).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/ObservabilityPipelineWebsocketSourceTlsWithClientCertMode.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsWithClientCertMode.java new file mode 100644 index 00000000000..144e4e8fedb --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceTlsWithClientCertMode.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; + +/** TLS mode. Must be with_client_cert. */ +@JsonSerialize( + using = + ObservabilityPipelineWebsocketSourceTlsWithClientCertMode + .ObservabilityPipelineWebsocketSourceTlsWithClientCertModeSerializer.class) +public class ObservabilityPipelineWebsocketSourceTlsWithClientCertMode extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("with_client_cert")); + + public static final ObservabilityPipelineWebsocketSourceTlsWithClientCertMode WITH_CLIENT_CERT = + new ObservabilityPipelineWebsocketSourceTlsWithClientCertMode("with_client_cert"); + + ObservabilityPipelineWebsocketSourceTlsWithClientCertMode(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineWebsocketSourceTlsWithClientCertModeSerializer + extends StdSerializer { + public ObservabilityPipelineWebsocketSourceTlsWithClientCertModeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineWebsocketSourceTlsWithClientCertModeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineWebsocketSourceTlsWithClientCertMode value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineWebsocketSourceTlsWithClientCertMode fromValue(String value) { + return new ObservabilityPipelineWebsocketSourceTlsWithClientCertMode(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceType.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceType.java new file mode 100644 index 00000000000..8cc42aed296 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineWebsocketSourceType.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 source type. The value should always be websocket. */ +@JsonSerialize( + using = + ObservabilityPipelineWebsocketSourceType.ObservabilityPipelineWebsocketSourceTypeSerializer + .class) +public class ObservabilityPipelineWebsocketSourceType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("websocket")); + + public static final ObservabilityPipelineWebsocketSourceType WEBSOCKET = + new ObservabilityPipelineWebsocketSourceType("websocket"); + + ObservabilityPipelineWebsocketSourceType(String value) { + super(value, allowedValues); + } + + public static class ObservabilityPipelineWebsocketSourceTypeSerializer + extends StdSerializer { + public ObservabilityPipelineWebsocketSourceTypeSerializer( + Class t) { + super(t); + } + + public ObservabilityPipelineWebsocketSourceTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ObservabilityPipelineWebsocketSourceType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ObservabilityPipelineWebsocketSourceType fromValue(String value) { + return new ObservabilityPipelineWebsocketSourceType(value); + } +} diff --git a/src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.freeze new file mode 100644 index 00000000000..e092c16a233 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-06-22T19:51:31.598Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.json new file mode 100644 index 00000000000..d9d01eabd19 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Validate_an_observability_pipeline_with_websocket_source_bearer_auth_returns_OK_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processor_groups\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"websocket-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"auth_strategy\":\"bearer\",\"decoding\":\"json\",\"id\":\"websocket-source\",\"tls\":{\"mode\":\"enabled\"},\"token_key\":\"WS_BEARER_TOKEN\",\"type\":\"websocket\",\"uri_key\":\"WS_URI\"}]},\"name\":\"Pipeline with WebSocket Source\"},\"type\":\"pipelines\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/obs-pipelines/pipelines/validate", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[]}\n", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "ebf97aef-d675-61ee-80c3-75cc43281c80" + } +] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature b/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature index a57aed2a032..e5ee4d0545d 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature @@ -294,3 +294,11 @@ Feature: Observability Pipelines When the request is sent Then the response status is 200 OK And the response "errors" has length 0 + + @team:DataDog/observability-pipelines + Scenario: Validate an observability pipeline with websocket source bearer auth returns "OK" response + Given new "ValidatePipeline" request + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processor_groups": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["websocket-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "websocket-source", "type": "websocket", "decoding": "json", "auth_strategy": "bearer", "token_key": "WS_BEARER_TOKEN", "uri_key": "WS_URI", "tls": {"mode": "enabled"}}]}, "name": "Pipeline with WebSocket Source"}, "type": "pipelines"}} + When the request is sent + Then the response status is 200 OK + And the response "errors" has length 0