Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |-
Expand Down Expand Up @@ -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:
Expand Down
105 changes: 105 additions & 0 deletions examples/v2/observability-pipelines/ValidatePipeline_337125830.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
Loading
Loading