Skip to content

Commit 5f946bf

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add ObservabilityPipelineWebsocketSource to schema (#1776)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent ea0ce59 commit 5f946bf

15 files changed

Lines changed: 1096 additions & 0 deletions

.generator/schemas/v2/openapi.yaml

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64152,6 +64152,7 @@ components:
6415264152
- $ref: "#/components/schemas/ObservabilityPipelineSplunkTcpSource"
6415364153
- $ref: "#/components/schemas/ObservabilityPipelineSumoLogicSource"
6415464154
- $ref: "#/components/schemas/ObservabilityPipelineSyslogNgSource"
64155+
- $ref: "#/components/schemas/ObservabilityPipelineWebsocketSource"
6415564156
- $ref: "#/components/schemas/ObservabilityPipelineOpentelemetrySource"
6415664157
ObservabilityPipelineCrowdStrikeNextGenSiemDestination:
6415764158
description: |-
@@ -68808,6 +68809,128 @@ components:
6880868809
required:
6880968810
- crt_file
6881068811
type: object
68812+
ObservabilityPipelineWebsocketSource:
68813+
description: |-
68814+
The `websocket` source ingests logs from a WebSocket server using the `ws://` or `wss://` protocol.
68815+
68816+
**Supported pipeline types:** logs.
68817+
properties:
68818+
auth_strategy:
68819+
$ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceAuthStrategy"
68820+
custom_key:
68821+
description: Name of the environment variable or secret that holds the custom authorization header value. Used when `auth_strategy` is `custom`.
68822+
example: WS_AUTH_CUSTOM_HEADER
68823+
type: string
68824+
decoding:
68825+
$ref: "#/components/schemas/ObservabilityPipelineDecoding"
68826+
id:
68827+
description: The unique identifier for this component.
68828+
example: websocket-source
68829+
type: string
68830+
password_key:
68831+
description: Name of the environment variable or secret that holds the password. Used when `auth_strategy` is `basic`.
68832+
example: WS_AUTH_PASSWORD
68833+
type: string
68834+
tls:
68835+
$ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTls"
68836+
token_key:
68837+
description: Name of the environment variable or secret that holds the bearer token. Used when `auth_strategy` is `bearer`.
68838+
example: WS_BEARER_TOKEN
68839+
type: string
68840+
type:
68841+
$ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceType"
68842+
uri_key:
68843+
description: Name of the environment variable or secret that holds the WebSocket server URI (`ws://` or `wss://`).
68844+
example: WS_URI
68845+
type: string
68846+
username_key:
68847+
description: Name of the environment variable or secret that holds the username. Used when `auth_strategy` is `basic`.
68848+
example: WS_AUTH_USERNAME
68849+
type: string
68850+
required:
68851+
- id
68852+
- type
68853+
- decoding
68854+
- auth_strategy
68855+
type: object
68856+
x-pipeline-types: [logs]
68857+
ObservabilityPipelineWebsocketSourceAuthStrategy:
68858+
description: Authentication strategy for the WebSocket source connection.
68859+
enum:
68860+
- none
68861+
- basic
68862+
- bearer
68863+
- custom
68864+
example: bearer
68865+
type: string
68866+
x-enum-varnames:
68867+
- NONE
68868+
- BASIC
68869+
- BEARER
68870+
- CUSTOM
68871+
ObservabilityPipelineWebsocketSourceTls:
68872+
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.
68873+
oneOf:
68874+
- $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsEnabled"
68875+
- $ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsWithClientCert"
68876+
ObservabilityPipelineWebsocketSourceTlsEnabled:
68877+
description: TLS configuration that enables encryption without a client certificate. Use this for standard `wss://` connections that do not require mutual TLS.
68878+
properties:
68879+
mode:
68880+
$ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsEnabledMode"
68881+
required:
68882+
- mode
68883+
type: object
68884+
ObservabilityPipelineWebsocketSourceTlsEnabledMode:
68885+
description: TLS mode. Must be `enabled`.
68886+
enum:
68887+
- enabled
68888+
example: enabled
68889+
type: string
68890+
x-enum-varnames:
68891+
- ENABLED
68892+
ObservabilityPipelineWebsocketSourceTlsWithClientCert:
68893+
description: TLS configuration that enables encryption and presents a client certificate for mutual TLS authentication.
68894+
properties:
68895+
ca_file:
68896+
description: Path to the Certificate Authority (CA) file used to validate the remote server's TLS certificate.
68897+
example: /path/to/ca.crt
68898+
type: string
68899+
crt_file:
68900+
description: Path to the TLS client certificate file used to identify this source to the remote server.
68901+
example: /path/to/client.crt
68902+
type: string
68903+
key_file:
68904+
description: Path to the private key file associated with the client certificate.
68905+
example: /path/to/client.key
68906+
type: string
68907+
key_pass_key:
68908+
description: Name of the environment variable or secret that holds the passphrase for the private key file.
68909+
example: WS_TLS_KEY_PASSPHRASE
68910+
type: string
68911+
mode:
68912+
$ref: "#/components/schemas/ObservabilityPipelineWebsocketSourceTlsWithClientCertMode"
68913+
required:
68914+
- mode
68915+
- crt_file
68916+
type: object
68917+
ObservabilityPipelineWebsocketSourceTlsWithClientCertMode:
68918+
description: TLS mode. Must be `with_client_cert`.
68919+
enum:
68920+
- with_client_cert
68921+
example: with_client_cert
68922+
type: string
68923+
x-enum-varnames:
68924+
- WITH_CLIENT_CERT
68925+
ObservabilityPipelineWebsocketSourceType:
68926+
default: websocket
68927+
description: The source type. The value should always be `websocket`.
68928+
enum:
68929+
- websocket
68930+
example: websocket
68931+
type: string
68932+
x-enum-varnames:
68933+
- WEBSOCKET
6881168934
OktaAPIToken:
6881268935
description: The definition of the `OktaAPIToken` object.
6881368936
properties:
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
// Validate an observability pipeline with websocket source bearer auth returns
2+
// "OK" response
3+
use datadog_api_client::datadog;
4+
use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPipelinesAPI;
5+
use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig;
6+
use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem;
7+
use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorGroup;
8+
use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem;
9+
use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem;
10+
use datadog_api_client::datadogV2::model::ObservabilityPipelineDataAttributes;
11+
use datadog_api_client::datadogV2::model::ObservabilityPipelineDatadogLogsDestination;
12+
use datadog_api_client::datadogV2::model::ObservabilityPipelineDatadogLogsDestinationType;
13+
use datadog_api_client::datadogV2::model::ObservabilityPipelineDecoding;
14+
use datadog_api_client::datadogV2::model::ObservabilityPipelineFilterProcessor;
15+
use datadog_api_client::datadogV2::model::ObservabilityPipelineFilterProcessorType;
16+
use datadog_api_client::datadogV2::model::ObservabilityPipelineSpec;
17+
use datadog_api_client::datadogV2::model::ObservabilityPipelineSpecData;
18+
use datadog_api_client::datadogV2::model::ObservabilityPipelineWebsocketSource;
19+
use datadog_api_client::datadogV2::model::ObservabilityPipelineWebsocketSourceAuthStrategy;
20+
use datadog_api_client::datadogV2::model::ObservabilityPipelineWebsocketSourceTls;
21+
use datadog_api_client::datadogV2::model::ObservabilityPipelineWebsocketSourceTlsEnabled;
22+
use datadog_api_client::datadogV2::model::ObservabilityPipelineWebsocketSourceTlsEnabledMode;
23+
use datadog_api_client::datadogV2::model::ObservabilityPipelineWebsocketSourceType;
24+
25+
#[tokio::main]
26+
async fn main() {
27+
let body =
28+
ObservabilityPipelineSpec::new(
29+
ObservabilityPipelineSpecData::new(
30+
ObservabilityPipelineDataAttributes::new(
31+
ObservabilityPipelineConfig::new(
32+
vec![
33+
ObservabilityPipelineConfigDestinationItem::ObservabilityPipelineDatadogLogsDestination(
34+
Box::new(
35+
ObservabilityPipelineDatadogLogsDestination::new(
36+
"datadog-logs-destination".to_string(),
37+
vec!["my-processor-group".to_string()],
38+
ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS,
39+
),
40+
),
41+
)
42+
],
43+
vec![
44+
ObservabilityPipelineConfigSourceItem::ObservabilityPipelineWebsocketSource(
45+
Box::new(
46+
ObservabilityPipelineWebsocketSource::new(
47+
ObservabilityPipelineWebsocketSourceAuthStrategy::BEARER,
48+
ObservabilityPipelineDecoding::DECODE_JSON,
49+
"websocket-source".to_string(),
50+
ObservabilityPipelineWebsocketSourceType::WEBSOCKET,
51+
)
52+
.tls(
53+
ObservabilityPipelineWebsocketSourceTls
54+
::ObservabilityPipelineWebsocketSourceTlsEnabled(
55+
Box::new(
56+
ObservabilityPipelineWebsocketSourceTlsEnabled::new(
57+
ObservabilityPipelineWebsocketSourceTlsEnabledMode::ENABLED,
58+
),
59+
),
60+
),
61+
)
62+
.token_key("WS_BEARER_TOKEN".to_string())
63+
.uri_key("WS_URI".to_string()),
64+
),
65+
)
66+
],
67+
).processor_groups(
68+
vec![
69+
ObservabilityPipelineConfigProcessorGroup::new(
70+
true,
71+
"my-processor-group".to_string(),
72+
"service:my-service".to_string(),
73+
vec!["websocket-source".to_string()],
74+
vec![
75+
ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor(
76+
Box::new(
77+
ObservabilityPipelineFilterProcessor::new(
78+
true,
79+
"filter-processor".to_string(),
80+
"status:error".to_string(),
81+
ObservabilityPipelineFilterProcessorType::FILTER,
82+
),
83+
),
84+
)
85+
],
86+
)
87+
],
88+
),
89+
"Pipeline with WebSocket Source".to_string(),
90+
),
91+
"pipelines".to_string(),
92+
),
93+
);
94+
let configuration = datadog::Configuration::new();
95+
let api = ObservabilityPipelinesAPI::with_config(configuration);
96+
let resp = api.validate_pipeline(body).await;
97+
if let Ok(value) = resp {
98+
println!("{:#?}", value);
99+
} else {
100+
println!("{:#?}", resp.unwrap_err());
101+
}
102+
}

src/datadogV2/model/mod.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7660,6 +7660,22 @@ pub mod model_observability_pipeline_syslog_ng_source;
76607660
pub use self::model_observability_pipeline_syslog_ng_source::ObservabilityPipelineSyslogNgSource;
76617661
pub mod model_observability_pipeline_syslog_ng_source_type;
76627662
pub use self::model_observability_pipeline_syslog_ng_source_type::ObservabilityPipelineSyslogNgSourceType;
7663+
pub mod model_observability_pipeline_websocket_source;
7664+
pub use self::model_observability_pipeline_websocket_source::ObservabilityPipelineWebsocketSource;
7665+
pub mod model_observability_pipeline_websocket_source_auth_strategy;
7666+
pub use self::model_observability_pipeline_websocket_source_auth_strategy::ObservabilityPipelineWebsocketSourceAuthStrategy;
7667+
pub mod model_observability_pipeline_websocket_source_tls_enabled;
7668+
pub use self::model_observability_pipeline_websocket_source_tls_enabled::ObservabilityPipelineWebsocketSourceTlsEnabled;
7669+
pub mod model_observability_pipeline_websocket_source_tls_enabled_mode;
7670+
pub use self::model_observability_pipeline_websocket_source_tls_enabled_mode::ObservabilityPipelineWebsocketSourceTlsEnabledMode;
7671+
pub mod model_observability_pipeline_websocket_source_tls_with_client_cert;
7672+
pub use self::model_observability_pipeline_websocket_source_tls_with_client_cert::ObservabilityPipelineWebsocketSourceTlsWithClientCert;
7673+
pub mod model_observability_pipeline_websocket_source_tls_with_client_cert_mode;
7674+
pub use self::model_observability_pipeline_websocket_source_tls_with_client_cert_mode::ObservabilityPipelineWebsocketSourceTlsWithClientCertMode;
7675+
pub mod model_observability_pipeline_websocket_source_tls;
7676+
pub use self::model_observability_pipeline_websocket_source_tls::ObservabilityPipelineWebsocketSourceTls;
7677+
pub mod model_observability_pipeline_websocket_source_type;
7678+
pub use self::model_observability_pipeline_websocket_source_type::ObservabilityPipelineWebsocketSourceType;
76637679
pub mod model_observability_pipeline_opentelemetry_source;
76647680
pub use self::model_observability_pipeline_opentelemetry_source::ObservabilityPipelineOpentelemetrySource;
76657681
pub mod model_observability_pipeline_opentelemetry_source_type;

src/datadogV2/model/model_observability_pipeline_config_source_item.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ pub enum ObservabilityPipelineConfigSourceItem {
5656
ObservabilityPipelineSyslogNgSource(
5757
Box<crate::datadogV2::model::ObservabilityPipelineSyslogNgSource>,
5858
),
59+
ObservabilityPipelineWebsocketSource(
60+
Box<crate::datadogV2::model::ObservabilityPipelineWebsocketSource>,
61+
),
5962
ObservabilityPipelineOpentelemetrySource(
6063
Box<crate::datadogV2::model::ObservabilityPipelineOpentelemetrySource>,
6164
),
@@ -234,6 +237,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineConfigSourceItem {
234237
);
235238
}
236239
}
240+
if let Ok(_v) = serde_json::from_value::<
241+
Box<crate::datadogV2::model::ObservabilityPipelineWebsocketSource>,
242+
>(value.clone())
243+
{
244+
if !_v._unparsed {
245+
return Ok(
246+
ObservabilityPipelineConfigSourceItem::ObservabilityPipelineWebsocketSource(_v),
247+
);
248+
}
249+
}
237250
if let Ok(_v) = serde_json::from_value::<
238251
Box<crate::datadogV2::model::ObservabilityPipelineOpentelemetrySource>,
239252
>(value.clone())

0 commit comments

Comments
 (0)