datadog_agent_config/generated/
datadog_configuration.rs

1// @generated by build.rs from core_schema.yaml + schema_overlay.yaml — DO NOT EDIT
2// Regenerate by running `cargo build -p datadog-agent-config`.
3#![allow(clippy::all, dead_code, unused)]
4
5// Including the schema documentation here is noisy and causes issues with doc lints.
6#![allow(missing_docs)]
7
8use std::collections::HashMap;
9
10/// Error types.
11pub mod error {
12    pub struct ConversionError(::std::borrow::Cow<'static, str>);
13    impl ::std::error::Error for ConversionError {}
14    impl ::std::fmt::Display for ConversionError {
15        fn fmt(
16            &self,
17            f: &mut ::std::fmt::Formatter<'_>,
18        ) -> Result<(), ::std::fmt::Error> {
19            ::std::fmt::Display::fmt(&self.0, f)
20        }
21    }
22    impl ::std::fmt::Debug for ConversionError {
23        fn fmt(
24            &self,
25            f: &mut ::std::fmt::Formatter<'_>,
26        ) -> Result<(), ::std::fmt::Error> {
27            ::std::fmt::Debug::fmt(&self.0, f)
28        }
29    }
30    impl From<&'static str> for ConversionError {
31        fn from(value: &'static str) -> Self {
32            Self(value.into())
33        }
34    }
35    impl From<String> for ConversionError {
36        fn from(value: String) -> Self {
37            Self(value.into())
38        }
39    }
40}
41
42#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
43pub struct DatadogConfiguration {
44    #[serde(default, skip_serializing_if = ":: std :: collections :: HashMap::is_empty")]
45    #[serde(deserialize_with = "crate::list_de::deserialize_string_map_scalar_or_seq")]
46    pub additional_endpoints: HashMap<String, Vec<String>>,
47
48    #[serde(default)]
49    pub agent_ipc: AgentIpc,
50
51    #[serde(default = "defaults::default_u64::<i64, 2>")]
52    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
53    pub aggregator_stop_timeout: i64,
54
55    #[serde(default)]
56    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
57    pub allow_arbitrary_tags: bool,
58
59    #[serde(default)]
60    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
61    pub api_key: String,
62
63    #[serde(default)]
64    pub apm_config: ApmConfig,
65
66    #[serde(default)]
67    pub autoscaling: Autoscaling,
68
69    #[serde(default)]
70    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
71    pub basic_telemetry_add_container_tags: bool,
72
73    #[serde(default)]
74    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
75    pub bind_host: String,
76
77    #[serde(default)]
78    pub cluster_agent: ClusterAgent,
79
80    #[serde(default)]
81    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
82    pub cluster_name: String,
83
84    #[serde(default = "defaults::default_u64::<i64, 5001>")]
85    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
86    pub cmd_port: i64,
87
88    #[serde(default = "defaults::default_u64::<i64, 1>")]
89    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
90    pub cri_connection_timeout: i64,
91
92    #[serde(default = "defaults::default_u64::<i64, 5>")]
93    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
94    pub cri_query_timeout: i64,
95
96    #[serde(default)]
97    pub data_plane: DataPlane,
98
99    #[serde(default = "defaults::datadog_configuration_dd_url")]
100    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
101    pub dd_url: String,
102
103    #[serde(default)]
104    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
105    pub disable_file_logging: bool,
106
107    #[serde(default = "defaults::default_u64::<i64, 8192>")]
108    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
109    pub dogstatsd_buffer_size: i64,
110
111    #[serde(default)]
112    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
113    pub dogstatsd_capture_depth: i64,
114
115    #[serde(default)]
116    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
117    pub dogstatsd_capture_path: String,
118
119    #[serde(default = "defaults::default_u64::<i64, 20>")]
120    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
121    pub dogstatsd_context_expiry_seconds: i64,
122
123    #[serde(default)]
124    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
125    pub dogstatsd_disable_verbose_logs: bool,
126
127    #[serde(default)]
128    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
129    pub dogstatsd_entity_id_precedence: bool,
130
131    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
132    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
133    pub dogstatsd_eol_required: Vec<String>,
134
135    #[serde(default = "defaults::default_u64::<i64, 300>")]
136    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
137    pub dogstatsd_expiry_seconds: i64,
138
139    #[serde(default)]
140    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
141    pub dogstatsd_flush_incomplete_buckets: bool,
142
143    #[serde(default)]
144    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
145    pub dogstatsd_log_file: String,
146
147    #[serde(default = "defaults::default_u64::<i64, 3>")]
148    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
149    pub dogstatsd_log_file_max_rolls: i64,
150
151    #[serde(default = "defaults::datadog_configuration_dogstatsd_log_file_max_size")]
152    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
153    pub dogstatsd_log_file_max_size: String,
154
155    #[serde(default = "defaults::default_bool::<true>")]
156    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
157    pub dogstatsd_logging_enabled: bool,
158
159    #[serde(default = "defaults::default_u64::<i64, 1000>")]
160    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
161    pub dogstatsd_mapper_cache_size: i64,
162
163    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
164    pub dogstatsd_mapper_profiles: Vec<::serde_json::Value>,
165
166    #[serde(default)]
167    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
168    pub dogstatsd_metrics_stats_enable: bool,
169
170    #[serde(default = "defaults::default_bool::<true>")]
171    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
172    pub dogstatsd_no_aggregation_pipeline: bool,
173
174    #[serde(default)]
175    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
176    pub dogstatsd_non_local_traffic: bool,
177
178    #[serde(default)]
179    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
180    pub dogstatsd_origin_detection: bool,
181
182    #[serde(default)]
183    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
184    pub dogstatsd_origin_detection_client: bool,
185
186    #[serde(default = "defaults::default_bool::<true>")]
187    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
188    pub dogstatsd_origin_optout_enabled: bool,
189
190    #[serde(default)]
191    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
192    pub dogstatsd_pipe_name: String,
193
194    #[serde(default = "defaults::default_u64::<i64, 8125>")]
195    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
196    pub dogstatsd_port: i64,
197
198    #[serde(default)]
199    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
200    pub dogstatsd_so_rcvbuf: i64,
201
202    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
203    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
204    pub dogstatsd_socket: Option<String>,
205
206    #[serde(default)]
207    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
208    pub dogstatsd_stream_log_too_big: bool,
209
210    #[serde(default)]
211    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
212    pub dogstatsd_stream_socket: String,
213
214    #[serde(default = "defaults::default_u64::<i64, 4096>")]
215    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
216    pub dogstatsd_string_interner_size: i64,
217
218    #[serde(default = "defaults::datadog_configuration_dogstatsd_tag_cardinality")]
219    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
220    pub dogstatsd_tag_cardinality: String,
221
222    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
223    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
224    pub dogstatsd_tags: Vec<String>,
225
226    #[serde(
227        default = "defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor"
228    )]
229    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
230    pub dogstatsd_windows_pipe_security_descriptor: String,
231
232    #[serde(default)]
233    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
234    pub dogstatsd_workers_count: i64,
235
236    #[serde(default)]
237    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
238    pub eks_fargate: bool,
239
240    #[serde(default)]
241    pub enable_payloads: EnablePayloads,
242
243    #[serde(default)]
244    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
245    pub env: String,
246
247    #[serde(
248        default = "duration_defaults::expected_tags_duration",
249
250        deserialize_with = "crate::duration_de::deserialize_go_duration"
251    )]
252    pub expected_tags_duration: std::time::Duration,
253
254    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
255    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
256    pub extra_tags: Vec<String>,
257
258    #[serde(default = "defaults::default_u64::<i64, 60>")]
259    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
260    pub forwarder_apikey_validation_interval: i64,
261
262    #[serde(default = "defaults::default_u64::<i64, 2>")]
263    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
264    pub forwarder_backoff_base: i64,
265
266    #[serde(default = "defaults::default_u64::<i64, 2>")]
267    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
268    pub forwarder_backoff_factor: i64,
269
270    #[serde(default = "defaults::default_u64::<i64, 64>")]
271    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
272    pub forwarder_backoff_max: i64,
273
274    #[serde(default)]
275    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
276    pub forwarder_connection_reset_interval: i64,
277
278    #[serde(
279        default = "defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio"
280    )]
281    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
282    pub forwarder_flush_to_disk_mem_ratio: f64,
283
284    #[serde(default = "defaults::default_u64::<i64, 100>")]
285    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
286    pub forwarder_high_prio_buffer_size: i64,
287
288    #[serde(default = "defaults::datadog_configuration_forwarder_http_protocol")]
289    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
290    pub forwarder_http_protocol: String,
291
292    #[serde(default = "defaults::default_u64::<i64, 10>")]
293    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
294    pub forwarder_max_concurrent_requests: i64,
295
296    #[serde(default = "defaults::default_u64::<i64, 1>")]
297    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
298    pub forwarder_num_workers: i64,
299
300    #[serde(default = "defaults::default_u64::<i64, 10>")]
301    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
302    pub forwarder_outdated_file_in_days: i64,
303
304    #[serde(default = "defaults::default_u64::<i64, 2>")]
305    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
306    pub forwarder_recovery_interval: i64,
307
308    #[serde(default)]
309    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
310    pub forwarder_recovery_reset: bool,
311
312    #[serde(default = "defaults::default_u64::<i64, 900>")]
313    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
314    pub forwarder_retry_queue_capacity_time_interval_sec: i64,
315
316    #[serde(default)]
317    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
318    pub forwarder_retry_queue_max_size: i64,
319
320    #[serde(default = "defaults::default_u64::<i64, 15728640>")]
321    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
322    pub forwarder_retry_queue_payloads_max_size: i64,
323
324    #[serde(default = "defaults::default_u64::<i64, 2>")]
325    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
326    pub forwarder_stop_timeout: i64,
327
328    #[serde(
329        default = "defaults::datadog_configuration_forwarder_storage_max_disk_ratio"
330    )]
331    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
332    pub forwarder_storage_max_disk_ratio: f64,
333
334    #[serde(default)]
335    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
336    pub forwarder_storage_max_size_in_bytes: i64,
337
338    #[serde(default)]
339    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
340    pub forwarder_storage_path: String,
341
342    #[serde(default = "defaults::default_u64::<i64, 20>")]
343    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
344    pub forwarder_timeout: i64,
345
346    #[serde(default = "defaults::datadog_configuration_histogram_aggregates")]
347    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
348    pub histogram_aggregates: Vec<String>,
349
350    #[serde(default)]
351    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
352    pub histogram_copy_to_distribution: bool,
353
354    #[serde(default)]
355    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
356    pub histogram_copy_to_distribution_prefix: String,
357
358    #[serde(default = "defaults::datadog_configuration_histogram_percentiles")]
359    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
360    pub histogram_percentiles: Vec<String>,
361
362    #[serde(default)]
363    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
364    pub kubernetes_kubelet_nodename: String,
365
366    #[serde(default = "defaults::default_u64::<i64, 1>")]
367    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
368    pub log_file_max_rolls: i64,
369
370    #[serde(default = "defaults::datadog_configuration_log_file_max_size")]
371    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
372    pub log_file_max_size: String,
373
374    #[serde(default)]
375    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
376    pub log_format_json: bool,
377
378    #[serde(default)]
379    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
380    pub log_format_rfc3339: bool,
381
382    #[serde(default = "defaults::datadog_configuration_log_level")]
383    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
384    pub log_level: String,
385
386    #[serde(default)]
387    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
388    pub log_payloads: bool,
389
390    #[serde(default = "defaults::default_bool::<true>")]
391    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
392    pub log_to_console: bool,
393
394    #[serde(default)]
395    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
396    pub log_to_syslog: bool,
397
398    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
399    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
400    pub metric_filterlist: Vec<String>,
401
402    #[serde(default)]
403    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
404    pub metric_filterlist_match_prefix: bool,
405
406    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
407    pub metric_tag_filterlist: Vec<::serde_json::Value>,
408
409    #[serde(default = "defaults::datadog_configuration_min_tls_version")]
410    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
411    pub min_tls_version: String,
412
413    #[serde(default)]
414    pub multi_region_failover: MultiRegionFailover,
415
416    #[serde(default)]
417    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
418    pub no_proxy_nonexact_match: bool,
419
420    #[serde(default)]
421    pub observability_pipelines_worker: ObservabilityPipelinesWorker,
422
423    #[serde(default)]
424    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
425    pub origin_detection_unified: bool,
426
427    #[serde(default)]
428    pub otlp_config: OtlpConfig,
429
430    #[serde(default)]
431    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
432    pub provider_kind: String,
433
434    #[serde(default)]
435    pub proxy: Proxy,
436
437    #[serde(default = "defaults::datadog_configuration_serializer_compressor_kind")]
438    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
439    pub serializer_compressor_kind: String,
440
441    #[serde(default)]
442    pub serializer_experimental_use_v3_api: SerializerExperimentalUseV3Api,
443
444    #[serde(default = "defaults::default_u64::<i64, 2621440>")]
445    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
446    pub serializer_max_payload_size: i64,
447
448    #[serde(default = "defaults::default_u64::<i64, 512000>")]
449    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
450    pub serializer_max_series_payload_size: i64,
451
452    #[serde(default = "defaults::default_u64::<i64, 10000>")]
453    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
454    pub serializer_max_series_points_per_payload: i64,
455
456    #[serde(default = "defaults::default_u64::<i64, 5242880>")]
457    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
458    pub serializer_max_series_uncompressed_payload_size: i64,
459
460    #[serde(default = "defaults::default_u64::<i64, 4194304>")]
461    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
462    pub serializer_max_uncompressed_payload_size: i64,
463
464    #[serde(default = "defaults::default_u64::<i64, 1>")]
465    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
466    pub serializer_zstd_compressor_level: i64,
467
468    #[serde(default = "defaults::datadog_configuration_site")]
469    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
470    pub site: String,
471
472    #[serde(default)]
473    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
474    pub skip_ssl_validation: bool,
475
476    #[serde(default)]
477    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
478    pub sslkeylogfile: String,
479
480    #[serde(default)]
481    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
482    pub statsd_forward_host: String,
483
484    #[serde(default)]
485    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
486    pub statsd_forward_port: i64,
487
488    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
489    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
490    pub statsd_metric_blocklist: Vec<String>,
491
492    #[serde(default)]
493    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
494    pub statsd_metric_blocklist_match_prefix: bool,
495
496    #[serde(default)]
497    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
498    pub statsd_metric_namespace: String,
499
500    #[serde(
501        default = "defaults::datadog_configuration_statsd_metric_namespace_blacklist"
502    )]
503    /// Alias defined in schema overlay.
504    #[serde(alias = "statsd_metric_namespace_blocklist")]
505    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
506    pub statsd_metric_namespace_blacklist: Vec<String>,
507
508    #[serde(default)]
509    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
510    pub syslog_rfc: bool,
511
512    #[serde(default)]
513    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
514    pub syslog_uri: String,
515
516    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
517    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
518    pub tags: Vec<String>,
519
520    #[serde(default)]
521    pub telemetry: Telemetry,
522
523    #[serde(
524        default = "duration_defaults::tls_handshake_timeout",
525
526        deserialize_with = "crate::duration_de::deserialize_go_duration"
527    )]
528    pub tls_handshake_timeout: std::time::Duration,
529
530    #[serde(default)]
531    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
532    pub use_proxy_for_cloud_metadata: bool,
533
534    #[serde(default)]
535    pub use_v2_api: UseV2Api,
536
537    #[serde(default)]
538    pub use_v3_api: UseV3Api,
539
540    #[serde(default)]
541    pub vector: Vector,
542
543    #[serde(default)]
544    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
545    pub vsock_addr: String,
546}
547
548impl Default for DatadogConfiguration {
549    fn default() -> Self {
550        Self {
551            additional_endpoints: Default::default(),
552            agent_ipc: Default::default(),
553            aggregator_stop_timeout: defaults::default_u64::<i64, 2>(),
554            allow_arbitrary_tags: Default::default(),
555            api_key: Default::default(),
556            apm_config: Default::default(),
557            autoscaling: Default::default(),
558            basic_telemetry_add_container_tags: Default::default(),
559            bind_host: Default::default(),
560            cluster_agent: Default::default(),
561            cluster_name: Default::default(),
562            cmd_port: defaults::default_u64::<i64, 5001>(),
563            cri_connection_timeout: defaults::default_u64::<i64, 1>(),
564            cri_query_timeout: defaults::default_u64::<i64, 5>(),
565            data_plane: Default::default(),
566            dd_url: defaults::datadog_configuration_dd_url(),
567            disable_file_logging: Default::default(),
568            dogstatsd_buffer_size: defaults::default_u64::<i64, 8192>(),
569            dogstatsd_capture_depth: Default::default(),
570            dogstatsd_capture_path: Default::default(),
571            dogstatsd_context_expiry_seconds: defaults::default_u64::<i64, 20>(),
572            dogstatsd_disable_verbose_logs: Default::default(),
573            dogstatsd_entity_id_precedence: Default::default(),
574            dogstatsd_eol_required: Default::default(),
575            dogstatsd_expiry_seconds: defaults::default_u64::<i64, 300>(),
576            dogstatsd_flush_incomplete_buckets: Default::default(),
577            dogstatsd_log_file: Default::default(),
578            dogstatsd_log_file_max_rolls: defaults::default_u64::<i64, 3>(),
579            dogstatsd_log_file_max_size: defaults::datadog_configuration_dogstatsd_log_file_max_size(),
580            dogstatsd_logging_enabled: defaults::default_bool::<true>(),
581            dogstatsd_mapper_cache_size: defaults::default_u64::<i64, 1000>(),
582            dogstatsd_mapper_profiles: Default::default(),
583            dogstatsd_metrics_stats_enable: Default::default(),
584            dogstatsd_no_aggregation_pipeline: defaults::default_bool::<true>(),
585            dogstatsd_non_local_traffic: Default::default(),
586            dogstatsd_origin_detection: Default::default(),
587            dogstatsd_origin_detection_client: Default::default(),
588            dogstatsd_origin_optout_enabled: defaults::default_bool::<true>(),
589            dogstatsd_pipe_name: Default::default(),
590            dogstatsd_port: defaults::default_u64::<i64, 8125>(),
591            dogstatsd_so_rcvbuf: Default::default(),
592            dogstatsd_socket: Default::default(),
593            dogstatsd_stream_log_too_big: Default::default(),
594            dogstatsd_stream_socket: Default::default(),
595            dogstatsd_string_interner_size: defaults::default_u64::<i64, 4096>(),
596            dogstatsd_tag_cardinality: defaults::datadog_configuration_dogstatsd_tag_cardinality(),
597            dogstatsd_tags: Default::default(),
598            dogstatsd_windows_pipe_security_descriptor: defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor(),
599            dogstatsd_workers_count: Default::default(),
600            eks_fargate: Default::default(),
601            enable_payloads: Default::default(),
602            env: Default::default(),
603            expected_tags_duration: duration_defaults::expected_tags_duration(),
604            extra_tags: Default::default(),
605            forwarder_apikey_validation_interval: defaults::default_u64::<i64, 60>(),
606            forwarder_backoff_base: defaults::default_u64::<i64, 2>(),
607            forwarder_backoff_factor: defaults::default_u64::<i64, 2>(),
608            forwarder_backoff_max: defaults::default_u64::<i64, 64>(),
609            forwarder_connection_reset_interval: Default::default(),
610            forwarder_flush_to_disk_mem_ratio: defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio(),
611            forwarder_high_prio_buffer_size: defaults::default_u64::<i64, 100>(),
612            forwarder_http_protocol: defaults::datadog_configuration_forwarder_http_protocol(),
613            forwarder_max_concurrent_requests: defaults::default_u64::<i64, 10>(),
614            forwarder_num_workers: defaults::default_u64::<i64, 1>(),
615            forwarder_outdated_file_in_days: defaults::default_u64::<i64, 10>(),
616            forwarder_recovery_interval: defaults::default_u64::<i64, 2>(),
617            forwarder_recovery_reset: Default::default(),
618            forwarder_retry_queue_capacity_time_interval_sec: defaults::default_u64::<
619                i64,
620                900,
621            >(),
622            forwarder_retry_queue_max_size: Default::default(),
623            forwarder_retry_queue_payloads_max_size: defaults::default_u64::<
624                i64,
625                15728640,
626            >(),
627            forwarder_stop_timeout: defaults::default_u64::<i64, 2>(),
628            forwarder_storage_max_disk_ratio: defaults::datadog_configuration_forwarder_storage_max_disk_ratio(),
629            forwarder_storage_max_size_in_bytes: Default::default(),
630            forwarder_storage_path: Default::default(),
631            forwarder_timeout: defaults::default_u64::<i64, 20>(),
632            histogram_aggregates: defaults::datadog_configuration_histogram_aggregates(),
633            histogram_copy_to_distribution: Default::default(),
634            histogram_copy_to_distribution_prefix: Default::default(),
635            histogram_percentiles: defaults::datadog_configuration_histogram_percentiles(),
636            kubernetes_kubelet_nodename: Default::default(),
637            log_file_max_rolls: defaults::default_u64::<i64, 1>(),
638            log_file_max_size: defaults::datadog_configuration_log_file_max_size(),
639            log_format_json: Default::default(),
640            log_format_rfc3339: Default::default(),
641            log_level: defaults::datadog_configuration_log_level(),
642            log_payloads: Default::default(),
643            log_to_console: defaults::default_bool::<true>(),
644            log_to_syslog: Default::default(),
645            metric_filterlist: Default::default(),
646            metric_filterlist_match_prefix: Default::default(),
647            metric_tag_filterlist: Default::default(),
648            min_tls_version: defaults::datadog_configuration_min_tls_version(),
649            multi_region_failover: Default::default(),
650            no_proxy_nonexact_match: Default::default(),
651            observability_pipelines_worker: Default::default(),
652            origin_detection_unified: Default::default(),
653            otlp_config: Default::default(),
654            provider_kind: Default::default(),
655            proxy: Default::default(),
656            serializer_compressor_kind: defaults::datadog_configuration_serializer_compressor_kind(),
657            serializer_experimental_use_v3_api: Default::default(),
658            serializer_max_payload_size: defaults::default_u64::<i64, 2621440>(),
659            serializer_max_series_payload_size: defaults::default_u64::<i64, 512000>(),
660            serializer_max_series_points_per_payload: defaults::default_u64::<
661                i64,
662                10000,
663            >(),
664            serializer_max_series_uncompressed_payload_size: defaults::default_u64::<
665                i64,
666                5242880,
667            >(),
668            serializer_max_uncompressed_payload_size: defaults::default_u64::<
669                i64,
670                4194304,
671            >(),
672            serializer_zstd_compressor_level: defaults::default_u64::<i64, 1>(),
673            site: defaults::datadog_configuration_site(),
674            skip_ssl_validation: Default::default(),
675            sslkeylogfile: Default::default(),
676            statsd_forward_host: Default::default(),
677            statsd_forward_port: Default::default(),
678            statsd_metric_blocklist: Default::default(),
679            statsd_metric_blocklist_match_prefix: Default::default(),
680            statsd_metric_namespace: Default::default(),
681            statsd_metric_namespace_blacklist: defaults::datadog_configuration_statsd_metric_namespace_blacklist(),
682            syslog_rfc: Default::default(),
683            syslog_uri: Default::default(),
684            tags: Default::default(),
685            telemetry: Default::default(),
686            tls_handshake_timeout: duration_defaults::tls_handshake_timeout(),
687            use_proxy_for_cloud_metadata: Default::default(),
688            use_v2_api: Default::default(),
689            use_v3_api: Default::default(),
690            vector: Default::default(),
691            vsock_addr: Default::default(),
692        }
693    }
694}
695
696#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
697pub struct AgentIpc {
698    #[serde(default = "defaults::default_u64::<i64, 134217728>")]
699    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
700    pub grpc_max_message_size: i64,
701}
702
703impl Default for AgentIpc {
704    fn default() -> Self {
705        Self {
706            grpc_max_message_size: defaults::default_u64::<i64, 134217728>(),
707        }
708    }
709}
710
711#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
712pub struct ApmConfig {
713    #[serde(default = "defaults::default_bool::<true>")]
714    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
715    pub compute_stats_by_span_kind: bool,
716
717    #[serde(default)]
718    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
719    pub enable_rare_sampler: bool,
720
721    #[serde(default)]
722    pub error_tracking_standalone: ApmConfigErrorTrackingStandalone,
723
724    #[serde(default = "defaults::datadog_configuration_apm_config_errors_per_second")]
725    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
726    pub errors_per_second: f64,
727
728    #[serde(default)]
729    pub obfuscation: ApmConfigObfuscation,
730
731    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
732    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
733    pub peer_tags: Vec<String>,
734
735    #[serde(default = "defaults::default_bool::<true>")]
736    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
737    pub peer_tags_aggregation: bool,
738
739    #[serde(default)]
740    pub probabilistic_sampler: ApmConfigProbabilisticSampler,
741
742    #[serde(
743        default = "defaults::datadog_configuration_apm_config_target_traces_per_second"
744    )]
745    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
746    pub target_traces_per_second: f64,
747}
748
749impl Default for ApmConfig {
750    fn default() -> Self {
751        Self {
752            compute_stats_by_span_kind: defaults::default_bool::<true>(),
753            enable_rare_sampler: Default::default(),
754            error_tracking_standalone: Default::default(),
755            errors_per_second: defaults::datadog_configuration_apm_config_errors_per_second(),
756            obfuscation: Default::default(),
757            peer_tags: Default::default(),
758            peer_tags_aggregation: defaults::default_bool::<true>(),
759            probabilistic_sampler: Default::default(),
760            target_traces_per_second: defaults::datadog_configuration_apm_config_target_traces_per_second(),
761        }
762    }
763}
764
765#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
766pub struct ApmConfigErrorTrackingStandalone {
767    #[serde(default)]
768    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
769    pub enabled: bool,
770}
771
772impl Default for ApmConfigErrorTrackingStandalone {
773    fn default() -> Self {
774        Self {
775            enabled: Default::default(),
776        }
777    }
778}
779
780#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
781pub struct ApmConfigObfuscation {
782    #[serde(default)]
783    pub credit_cards: ApmConfigObfuscationCreditCards,
784
785    #[serde(default)]
786    pub elasticsearch: ApmConfigObfuscationElasticsearch,
787
788    #[serde(default)]
789    pub http: ApmConfigObfuscationHttp,
790
791    #[serde(default)]
792    pub memcached: ApmConfigObfuscationMemcached,
793
794    #[serde(default)]
795    pub mongodb: ApmConfigObfuscationMongodb,
796
797    #[serde(default)]
798    pub opensearch: ApmConfigObfuscationOpensearch,
799
800    #[serde(default)]
801    pub redis: ApmConfigObfuscationRedis,
802
803    #[serde(default)]
804    pub valkey: ApmConfigObfuscationValkey,
805}
806
807impl Default for ApmConfigObfuscation {
808    fn default() -> Self {
809        Self {
810            credit_cards: Default::default(),
811            elasticsearch: Default::default(),
812            http: Default::default(),
813            memcached: Default::default(),
814            mongodb: Default::default(),
815            opensearch: Default::default(),
816            redis: Default::default(),
817            valkey: Default::default(),
818        }
819    }
820}
821
822#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
823pub struct ApmConfigObfuscationCreditCards {
824    #[serde(default = "defaults::default_bool::<true>")]
825    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
826    pub enabled: bool,
827
828    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
829    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
830    pub keep_values: Vec<String>,
831
832    #[serde(default)]
833    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
834    pub luhn: bool,
835}
836
837impl Default for ApmConfigObfuscationCreditCards {
838    fn default() -> Self {
839        Self {
840            enabled: defaults::default_bool::<true>(),
841            keep_values: Default::default(),
842            luhn: Default::default(),
843        }
844    }
845}
846
847#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
848pub struct ApmConfigObfuscationElasticsearch {
849    #[serde(default = "defaults::default_bool::<true>")]
850    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
851    pub enabled: bool,
852
853    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
854    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
855    pub keep_values: Vec<String>,
856
857    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
858    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
859    pub obfuscate_sql_values: Vec<String>,
860}
861
862impl Default for ApmConfigObfuscationElasticsearch {
863    fn default() -> Self {
864        Self {
865            enabled: defaults::default_bool::<true>(),
866            keep_values: Default::default(),
867            obfuscate_sql_values: Default::default(),
868        }
869    }
870}
871
872#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
873pub struct ApmConfigObfuscationHttp {
874    #[serde(default)]
875    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
876    pub remove_paths_with_digits: bool,
877
878    #[serde(default)]
879    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
880    pub remove_query_string: bool,
881}
882
883impl Default for ApmConfigObfuscationHttp {
884    fn default() -> Self {
885        Self {
886            remove_paths_with_digits: Default::default(),
887            remove_query_string: Default::default(),
888        }
889    }
890}
891
892#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
893pub struct ApmConfigObfuscationMemcached {
894    #[serde(default = "defaults::default_bool::<true>")]
895    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
896    pub enabled: bool,
897
898    #[serde(default)]
899    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
900    pub keep_command: bool,
901}
902
903impl Default for ApmConfigObfuscationMemcached {
904    fn default() -> Self {
905        Self {
906            enabled: defaults::default_bool::<true>(),
907            keep_command: Default::default(),
908        }
909    }
910}
911
912#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
913pub struct ApmConfigObfuscationMongodb {
914    #[serde(default = "defaults::default_bool::<true>")]
915    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
916    pub enabled: bool,
917
918    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
919    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
920    pub keep_values: Vec<String>,
921
922    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
923    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
924    pub obfuscate_sql_values: Vec<String>,
925}
926
927impl Default for ApmConfigObfuscationMongodb {
928    fn default() -> Self {
929        Self {
930            enabled: defaults::default_bool::<true>(),
931            keep_values: Default::default(),
932            obfuscate_sql_values: Default::default(),
933        }
934    }
935}
936
937#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
938pub struct ApmConfigObfuscationOpensearch {
939    #[serde(default = "defaults::default_bool::<true>")]
940    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
941    pub enabled: bool,
942
943    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
944    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
945    pub keep_values: Vec<String>,
946
947    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
948    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
949    pub obfuscate_sql_values: Vec<String>,
950}
951
952impl Default for ApmConfigObfuscationOpensearch {
953    fn default() -> Self {
954        Self {
955            enabled: defaults::default_bool::<true>(),
956            keep_values: Default::default(),
957            obfuscate_sql_values: Default::default(),
958        }
959    }
960}
961
962#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
963pub struct ApmConfigObfuscationRedis {
964    #[serde(default = "defaults::default_bool::<true>")]
965    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
966    pub enabled: bool,
967
968    #[serde(default)]
969    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
970    pub remove_all_args: bool,
971}
972
973impl Default for ApmConfigObfuscationRedis {
974    fn default() -> Self {
975        Self {
976            enabled: defaults::default_bool::<true>(),
977            remove_all_args: Default::default(),
978        }
979    }
980}
981
982#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
983pub struct ApmConfigObfuscationValkey {
984    #[serde(default = "defaults::default_bool::<true>")]
985    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
986    pub enabled: bool,
987
988    #[serde(default)]
989    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
990    pub remove_all_args: bool,
991}
992
993impl Default for ApmConfigObfuscationValkey {
994    fn default() -> Self {
995        Self {
996            enabled: defaults::default_bool::<true>(),
997            remove_all_args: Default::default(),
998        }
999    }
1000}
1001
1002#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1003pub struct ApmConfigProbabilisticSampler {
1004    #[serde(default)]
1005    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1006    pub enabled: bool,
1007
1008    #[serde(
1009        default = "defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage"
1010    )]
1011    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1012    pub sampling_percentage: f64,
1013}
1014
1015impl Default for ApmConfigProbabilisticSampler {
1016    fn default() -> Self {
1017        Self {
1018            enabled: Default::default(),
1019            sampling_percentage: defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage(),
1020        }
1021    }
1022}
1023
1024#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1025pub struct Autoscaling {
1026    #[serde(default)]
1027    pub failover: AutoscalingFailover,
1028}
1029
1030impl Default for Autoscaling {
1031    fn default() -> Self {
1032        Self {
1033            failover: Default::default(),
1034        }
1035    }
1036}
1037
1038#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1039pub struct AutoscalingFailover {
1040    #[serde(default)]
1041    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1042    pub enabled: bool,
1043
1044    #[serde(default = "defaults::datadog_configuration_autoscaling_failover_metrics")]
1045    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1046    pub metrics: Vec<String>,
1047}
1048
1049impl Default for AutoscalingFailover {
1050    fn default() -> Self {
1051        Self {
1052            enabled: Default::default(),
1053            metrics: defaults::datadog_configuration_autoscaling_failover_metrics(),
1054        }
1055    }
1056}
1057
1058#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1059pub struct ClusterAgent {
1060    #[serde(default)]
1061    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1062    pub auth_token: String,
1063
1064    #[serde(default)]
1065    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1066    pub enabled: bool,
1067
1068    #[serde(
1069        default = "defaults::datadog_configuration_cluster_agent_kubernetes_service_name"
1070    )]
1071    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1072    pub kubernetes_service_name: String,
1073
1074    #[serde(default)]
1075    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1076    pub url: String,
1077}
1078
1079impl Default for ClusterAgent {
1080    fn default() -> Self {
1081        Self {
1082            auth_token: Default::default(),
1083            enabled: Default::default(),
1084            kubernetes_service_name: defaults::datadog_configuration_cluster_agent_kubernetes_service_name(),
1085            url: Default::default(),
1086        }
1087    }
1088}
1089
1090#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1091pub struct DataPlane {
1092    #[serde(default = "defaults::datadog_configuration_data_plane_api_listen_address")]
1093    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1094    pub api_listen_address: String,
1095
1096    #[serde(default)]
1097    pub dogstatsd: DataPlaneDogstatsd,
1098
1099    #[serde(default)]
1100    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1101    pub enabled: bool,
1102
1103    #[serde(default = "defaults::datadog_configuration_data_plane_log_file")]
1104    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1105    pub log_file: String,
1106
1107    #[serde(default)]
1108    pub otlp: DataPlaneOtlp,
1109
1110    #[serde(default = "defaults::default_bool::<true>")]
1111    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1112    pub remote_agent_enabled: bool,
1113
1114    #[serde(
1115        default = "defaults::datadog_configuration_data_plane_secure_api_listen_address"
1116    )]
1117    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1118    pub secure_api_listen_address: String,
1119
1120    #[serde(default = "defaults::default_bool::<true>")]
1121    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1122    pub use_new_config_stream_endpoint: bool,
1123}
1124
1125impl Default for DataPlane {
1126    fn default() -> Self {
1127        Self {
1128            api_listen_address: defaults::datadog_configuration_data_plane_api_listen_address(),
1129            dogstatsd: Default::default(),
1130            enabled: Default::default(),
1131            log_file: defaults::datadog_configuration_data_plane_log_file(),
1132            otlp: Default::default(),
1133            remote_agent_enabled: defaults::default_bool::<true>(),
1134            secure_api_listen_address: defaults::datadog_configuration_data_plane_secure_api_listen_address(),
1135            use_new_config_stream_endpoint: defaults::default_bool::<true>(),
1136        }
1137    }
1138}
1139
1140#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1141pub struct DataPlaneDogstatsd {
1142    #[serde(default = "defaults::default_u64::<i64, 100000>")]
1143    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1144    pub aggregator_tag_filter_cache_capacity: i64,
1145
1146    #[serde(default = "defaults::default_bool::<true>")]
1147    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1148    pub enabled: bool,
1149}
1150
1151impl Default for DataPlaneDogstatsd {
1152    fn default() -> Self {
1153        Self {
1154            aggregator_tag_filter_cache_capacity: defaults::default_u64::<i64, 100000>(),
1155            enabled: defaults::default_bool::<true>(),
1156        }
1157    }
1158}
1159
1160#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1161pub struct DataPlaneOtlp {
1162    #[serde(default)]
1163    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1164    pub enabled: bool,
1165
1166    #[serde(default)]
1167    pub proxy: DataPlaneOtlpProxy,
1168}
1169
1170impl Default for DataPlaneOtlp {
1171    fn default() -> Self {
1172        Self {
1173            enabled: Default::default(),
1174            proxy: Default::default(),
1175        }
1176    }
1177}
1178
1179#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1180pub struct DataPlaneOtlpProxy {
1181    #[serde(default)]
1182    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1183    pub enabled: bool,
1184
1185    #[serde(default)]
1186    pub logs: DataPlaneOtlpProxyLogs,
1187
1188    #[serde(default)]
1189    pub metrics: DataPlaneOtlpProxyMetrics,
1190
1191    #[serde(default)]
1192    pub receiver: DataPlaneOtlpProxyReceiver,
1193
1194    #[serde(default)]
1195    pub traces: DataPlaneOtlpProxyTraces,
1196}
1197
1198impl Default for DataPlaneOtlpProxy {
1199    fn default() -> Self {
1200        Self {
1201            enabled: Default::default(),
1202            logs: Default::default(),
1203            metrics: Default::default(),
1204            receiver: Default::default(),
1205            traces: Default::default(),
1206        }
1207    }
1208}
1209
1210#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1211pub struct DataPlaneOtlpProxyLogs {
1212    #[serde(default = "defaults::default_bool::<true>")]
1213    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1214    pub enabled: bool,
1215}
1216
1217impl Default for DataPlaneOtlpProxyLogs {
1218    fn default() -> Self {
1219        Self {
1220            enabled: defaults::default_bool::<true>(),
1221        }
1222    }
1223}
1224
1225#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1226pub struct DataPlaneOtlpProxyMetrics {
1227    #[serde(default = "defaults::default_bool::<true>")]
1228    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1229    pub enabled: bool,
1230}
1231
1232impl Default for DataPlaneOtlpProxyMetrics {
1233    fn default() -> Self {
1234        Self {
1235            enabled: defaults::default_bool::<true>(),
1236        }
1237    }
1238}
1239
1240#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1241pub struct DataPlaneOtlpProxyReceiver {
1242    #[serde(default)]
1243    pub protocols: DataPlaneOtlpProxyReceiverProtocols,
1244}
1245
1246impl Default for DataPlaneOtlpProxyReceiver {
1247    fn default() -> Self {
1248        Self {
1249            protocols: Default::default(),
1250        }
1251    }
1252}
1253
1254#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1255pub struct DataPlaneOtlpProxyReceiverProtocols {
1256    #[serde(default)]
1257    pub grpc: DataPlaneOtlpProxyReceiverProtocolsGrpc,
1258}
1259
1260impl Default for DataPlaneOtlpProxyReceiverProtocols {
1261    fn default() -> Self {
1262        Self { grpc: Default::default() }
1263    }
1264}
1265
1266#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1267pub struct DataPlaneOtlpProxyReceiverProtocolsGrpc {
1268    #[serde(
1269        default = "defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint"
1270    )]
1271    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1272    pub endpoint: String,
1273}
1274
1275impl Default for DataPlaneOtlpProxyReceiverProtocolsGrpc {
1276    fn default() -> Self {
1277        Self {
1278            endpoint: defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint(),
1279        }
1280    }
1281}
1282
1283#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1284pub struct DataPlaneOtlpProxyTraces {
1285    #[serde(default = "defaults::default_bool::<true>")]
1286    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1287    pub enabled: bool,
1288}
1289
1290impl Default for DataPlaneOtlpProxyTraces {
1291    fn default() -> Self {
1292        Self {
1293            enabled: defaults::default_bool::<true>(),
1294        }
1295    }
1296}
1297
1298#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1299pub struct EnablePayloads {
1300    #[serde(default = "defaults::default_bool::<true>")]
1301    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1302    pub events: bool,
1303
1304    #[serde(default = "defaults::default_bool::<true>")]
1305    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1306    pub series: bool,
1307
1308    #[serde(default = "defaults::default_bool::<true>")]
1309    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1310    pub service_checks: bool,
1311
1312    #[serde(default = "defaults::default_bool::<true>")]
1313    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1314    pub sketches: bool,
1315}
1316
1317impl Default for EnablePayloads {
1318    fn default() -> Self {
1319        Self {
1320            events: defaults::default_bool::<true>(),
1321            series: defaults::default_bool::<true>(),
1322            service_checks: defaults::default_bool::<true>(),
1323            sketches: defaults::default_bool::<true>(),
1324        }
1325    }
1326}
1327
1328#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1329pub struct MultiRegionFailover {
1330    #[serde(default)]
1331    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1332    pub api_key: String,
1333
1334    #[serde(default)]
1335    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1336    pub dd_url: String,
1337
1338    #[serde(default)]
1339    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1340    pub enabled: bool,
1341
1342    #[serde(default)]
1343    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1344    pub failover_metrics: bool,
1345
1346    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1347    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1348    pub metric_allowlist: Vec<String>,
1349
1350    #[serde(default)]
1351    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1352    pub site: String,
1353}
1354
1355impl Default for MultiRegionFailover {
1356    fn default() -> Self {
1357        Self {
1358            api_key: Default::default(),
1359            dd_url: Default::default(),
1360            enabled: Default::default(),
1361            failover_metrics: Default::default(),
1362            metric_allowlist: Default::default(),
1363            site: Default::default(),
1364        }
1365    }
1366}
1367
1368#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1369pub struct ObservabilityPipelinesWorker {
1370    #[serde(default)]
1371    pub metrics: ObservabilityPipelinesWorkerMetrics,
1372}
1373
1374impl Default for ObservabilityPipelinesWorker {
1375    fn default() -> Self {
1376        Self {
1377            metrics: Default::default(),
1378        }
1379    }
1380}
1381
1382#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1383pub struct ObservabilityPipelinesWorkerMetrics {
1384    #[serde(default)]
1385    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1386    pub enabled: bool,
1387
1388    #[serde(default)]
1389    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1390    pub url: String,
1391
1392    #[serde(default)]
1393    pub use_v3_api: ObservabilityPipelinesWorkerMetricsUseV3Api,
1394}
1395
1396impl Default for ObservabilityPipelinesWorkerMetrics {
1397    fn default() -> Self {
1398        Self {
1399            enabled: Default::default(),
1400            url: Default::default(),
1401            use_v3_api: Default::default(),
1402        }
1403    }
1404}
1405
1406#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1407pub struct ObservabilityPipelinesWorkerMetricsUseV3Api {
1408    #[serde(default)]
1409    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1410    pub series: bool,
1411}
1412
1413impl Default for ObservabilityPipelinesWorkerMetricsUseV3Api {
1414    fn default() -> Self {
1415        Self { series: Default::default() }
1416    }
1417}
1418
1419#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1420pub struct OtlpConfig {
1421    #[serde(default)]
1422    pub logs: OtlpConfigLogs,
1423
1424    #[serde(default)]
1425    pub metrics: OtlpConfigMetrics,
1426
1427    #[serde(default)]
1428    pub receiver: OtlpConfigReceiver,
1429
1430    #[serde(default)]
1431    pub traces: OtlpConfigTraces,
1432}
1433
1434impl Default for OtlpConfig {
1435    fn default() -> Self {
1436        Self {
1437            logs: Default::default(),
1438            metrics: Default::default(),
1439            receiver: Default::default(),
1440            traces: Default::default(),
1441        }
1442    }
1443}
1444
1445#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1446pub struct OtlpConfigLogs {
1447    #[serde(default)]
1448    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1449    pub enabled: bool,
1450}
1451
1452impl Default for OtlpConfigLogs {
1453    fn default() -> Self {
1454        Self {
1455            enabled: Default::default(),
1456        }
1457    }
1458}
1459
1460#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1461pub struct OtlpConfigMetrics {
1462    #[serde(default = "defaults::default_u64::<i64, 3600>")]
1463    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1464    pub delta_ttl: i64,
1465
1466    #[serde(default = "defaults::default_bool::<true>")]
1467    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1468    pub enabled: bool,
1469
1470    #[serde(default)]
1471    pub histograms: OtlpConfigMetricsHistograms,
1472
1473    #[serde(default = "defaults::default_bool::<true>")]
1474    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1475    pub instrumentation_scope_metadata_as_tags: bool,
1476
1477    #[serde(default)]
1478    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1479    pub resource_attributes_as_tags: bool,
1480
1481    #[serde(default)]
1482    pub summaries: OtlpConfigMetricsSummaries,
1483
1484    #[serde(default)]
1485    pub sums: OtlpConfigMetricsSums,
1486
1487    #[serde(
1488        default = "defaults::datadog_configuration_otlp_config_metrics_tag_cardinality"
1489    )]
1490    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1491    pub tag_cardinality: String,
1492
1493    #[serde(default)]
1494    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1495    pub tags: String,
1496}
1497
1498impl Default for OtlpConfigMetrics {
1499    fn default() -> Self {
1500        Self {
1501            delta_ttl: defaults::default_u64::<i64, 3600>(),
1502            enabled: defaults::default_bool::<true>(),
1503            histograms: Default::default(),
1504            instrumentation_scope_metadata_as_tags: defaults::default_bool::<true>(),
1505            resource_attributes_as_tags: Default::default(),
1506            summaries: Default::default(),
1507            sums: Default::default(),
1508            tag_cardinality: defaults::datadog_configuration_otlp_config_metrics_tag_cardinality(),
1509            tags: Default::default(),
1510        }
1511    }
1512}
1513
1514#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1515pub struct OtlpConfigMetricsHistograms {
1516    #[serde(
1517        default = "defaults::datadog_configuration_otlp_config_metrics_histograms_mode"
1518    )]
1519    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1520    pub mode: String,
1521
1522    #[serde(default)]
1523    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1524    pub send_aggregation_metrics: bool,
1525}
1526
1527impl Default for OtlpConfigMetricsHistograms {
1528    fn default() -> Self {
1529        Self {
1530            mode: defaults::datadog_configuration_otlp_config_metrics_histograms_mode(),
1531            send_aggregation_metrics: Default::default(),
1532        }
1533    }
1534}
1535
1536#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1537pub struct OtlpConfigMetricsSummaries {
1538    #[serde(
1539        default = "defaults::datadog_configuration_otlp_config_metrics_summaries_mode"
1540    )]
1541    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1542    pub mode: String,
1543}
1544
1545impl Default for OtlpConfigMetricsSummaries {
1546    fn default() -> Self {
1547        Self {
1548            mode: defaults::datadog_configuration_otlp_config_metrics_summaries_mode(),
1549        }
1550    }
1551}
1552
1553#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1554pub struct OtlpConfigMetricsSums {
1555    #[serde(
1556        default = "defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode"
1557    )]
1558    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1559    pub cumulative_monotonic_mode: String,
1560
1561    #[serde(
1562        default = "defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value"
1563    )]
1564    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1565    pub initial_cumulative_monotonic_value: String,
1566}
1567
1568impl Default for OtlpConfigMetricsSums {
1569    fn default() -> Self {
1570        Self {
1571            cumulative_monotonic_mode: defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode(),
1572            initial_cumulative_monotonic_value: defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value(),
1573        }
1574    }
1575}
1576
1577#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1578pub struct OtlpConfigReceiver {
1579    #[serde(default)]
1580    pub protocols: OtlpConfigReceiverProtocols,
1581}
1582
1583impl Default for OtlpConfigReceiver {
1584    fn default() -> Self {
1585        Self {
1586            protocols: Default::default(),
1587        }
1588    }
1589}
1590
1591#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1592pub struct OtlpConfigReceiverProtocols {
1593    #[serde(default)]
1594    pub grpc: OtlpConfigReceiverProtocolsGrpc,
1595
1596    #[serde(default)]
1597    pub http: OtlpConfigReceiverProtocolsHttp,
1598}
1599
1600impl Default for OtlpConfigReceiverProtocols {
1601    fn default() -> Self {
1602        Self {
1603            grpc: Default::default(),
1604            http: Default::default(),
1605        }
1606    }
1607}
1608
1609#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1610pub struct OtlpConfigReceiverProtocolsGrpc {
1611    #[serde(
1612        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint"
1613    )]
1614    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1615    pub endpoint: String,
1616
1617    #[serde(default)]
1618    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1619    pub max_recv_msg_size_mib: i64,
1620
1621    #[serde(
1622        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport"
1623    )]
1624    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1625    pub transport: String,
1626}
1627
1628impl Default for OtlpConfigReceiverProtocolsGrpc {
1629    fn default() -> Self {
1630        Self {
1631            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint(),
1632            max_recv_msg_size_mib: Default::default(),
1633            transport: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport(),
1634        }
1635    }
1636}
1637
1638#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1639pub struct OtlpConfigReceiverProtocolsHttp {
1640    #[serde(default)]
1641    pub cors: OtlpConfigReceiverProtocolsHttpCors,
1642
1643    #[serde(
1644        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint"
1645    )]
1646    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1647    pub endpoint: String,
1648}
1649
1650impl Default for OtlpConfigReceiverProtocolsHttp {
1651    fn default() -> Self {
1652        Self {
1653            cors: Default::default(),
1654            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint(),
1655        }
1656    }
1657}
1658
1659#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1660pub struct OtlpConfigReceiverProtocolsHttpCors {
1661    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1662    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1663    pub allowed_headers: Vec<String>,
1664
1665    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1666    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1667    pub allowed_origins: Vec<String>,
1668
1669    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1670    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1671    pub exposed_headers: Vec<String>,
1672
1673    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1674    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_i64")]
1675    pub max_age: Option<i64>,
1676}
1677
1678impl Default for OtlpConfigReceiverProtocolsHttpCors {
1679    fn default() -> Self {
1680        Self {
1681            allowed_headers: Default::default(),
1682            allowed_origins: Default::default(),
1683            exposed_headers: Default::default(),
1684            max_age: Default::default(),
1685        }
1686    }
1687}
1688
1689#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1690pub struct OtlpConfigTraces {
1691    #[serde(default = "defaults::default_bool::<true>")]
1692    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1693    pub enabled: bool,
1694
1695    #[serde(default = "defaults::default_u64::<i64, 5003>")]
1696    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1697    pub internal_port: i64,
1698
1699    #[serde(default)]
1700    pub probabilistic_sampler: OtlpConfigTracesProbabilisticSampler,
1701}
1702
1703impl Default for OtlpConfigTraces {
1704    fn default() -> Self {
1705        Self {
1706            enabled: defaults::default_bool::<true>(),
1707            internal_port: defaults::default_u64::<i64, 5003>(),
1708            probabilistic_sampler: Default::default(),
1709        }
1710    }
1711}
1712
1713#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1714pub struct OtlpConfigTracesProbabilisticSampler {
1715    #[serde(
1716        default = "defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage"
1717    )]
1718    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1719    pub sampling_percentage: f64,
1720}
1721
1722impl Default for OtlpConfigTracesProbabilisticSampler {
1723    fn default() -> Self {
1724        Self {
1725            sampling_percentage: defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage(),
1726        }
1727    }
1728}
1729
1730#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1731pub struct Proxy {
1732    #[serde(default)]
1733    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1734    pub http: String,
1735
1736    #[serde(default)]
1737    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1738    pub https: String,
1739
1740    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1741    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1742    pub no_proxy: Vec<String>,
1743}
1744
1745impl Default for Proxy {
1746    fn default() -> Self {
1747        Self {
1748            http: Default::default(),
1749            https: Default::default(),
1750            no_proxy: Default::default(),
1751        }
1752    }
1753}
1754
1755#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1756pub struct SerializerExperimentalUseV3Api {
1757    #[serde(default)]
1758    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1759    pub compression_level: i64,
1760
1761    #[serde(default)]
1762    pub series: SerializerExperimentalUseV3ApiSeries,
1763
1764    #[serde(default)]
1765    pub sketches: SerializerExperimentalUseV3ApiSketches,
1766}
1767
1768impl Default for SerializerExperimentalUseV3Api {
1769    fn default() -> Self {
1770        Self {
1771            compression_level: Default::default(),
1772            series: Default::default(),
1773            sketches: Default::default(),
1774        }
1775    }
1776}
1777
1778#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1779pub struct SerializerExperimentalUseV3ApiSeries {
1780    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1781    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1782    pub endpoints: Vec<String>,
1783}
1784
1785impl Default for SerializerExperimentalUseV3ApiSeries {
1786    fn default() -> Self {
1787        Self {
1788            endpoints: Default::default(),
1789        }
1790    }
1791}
1792
1793#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1794pub struct SerializerExperimentalUseV3ApiSketches {
1795    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1796    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1797    pub endpoints: Vec<String>,
1798}
1799
1800impl Default for SerializerExperimentalUseV3ApiSketches {
1801    fn default() -> Self {
1802        Self {
1803            endpoints: Default::default(),
1804        }
1805    }
1806}
1807
1808#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1809pub struct Telemetry {
1810    #[serde(default)]
1811    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1812    pub dogstatsd_origin: bool,
1813}
1814
1815impl Default for Telemetry {
1816    fn default() -> Self {
1817        Self {
1818            dogstatsd_origin: Default::default(),
1819        }
1820    }
1821}
1822
1823#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1824pub struct UseV2Api {
1825    #[serde(default = "defaults::default_bool::<true>")]
1826    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1827    pub series: bool,
1828}
1829
1830impl Default for UseV2Api {
1831    fn default() -> Self {
1832        Self {
1833            series: defaults::default_bool::<true>(),
1834        }
1835    }
1836}
1837
1838#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1839pub struct UseV3Api {
1840    #[serde(default)]
1841    pub series: UseV3ApiSeries,
1842}
1843
1844impl Default for UseV3Api {
1845    fn default() -> Self {
1846        Self { series: Default::default() }
1847    }
1848}
1849
1850#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1851pub struct UseV3ApiSeries {
1852    #[serde(default = "defaults::datadog_configuration_use_v3_api_series_enabled")]
1853    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1854    pub enabled: String,
1855
1856    #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
1857    pub endpoints: ::serde_json::Map<String, ::serde_json::Value>,
1858}
1859
1860impl Default for UseV3ApiSeries {
1861    fn default() -> Self {
1862        Self {
1863            enabled: defaults::datadog_configuration_use_v3_api_series_enabled(),
1864            endpoints: Default::default(),
1865        }
1866    }
1867}
1868
1869#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1870pub struct Vector {
1871    #[serde(default)]
1872    pub metrics: VectorMetrics,
1873}
1874
1875impl Default for Vector {
1876    fn default() -> Self {
1877        Self {
1878            metrics: Default::default(),
1879        }
1880    }
1881}
1882
1883#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1884pub struct VectorMetrics {
1885    #[serde(default)]
1886    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1887    pub enabled: bool,
1888
1889    #[serde(default)]
1890    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1891    pub url: String,
1892
1893    #[serde(default)]
1894    pub use_v3_api: VectorMetricsUseV3Api,
1895}
1896
1897impl Default for VectorMetrics {
1898    fn default() -> Self {
1899        Self {
1900            enabled: Default::default(),
1901            url: Default::default(),
1902            use_v3_api: Default::default(),
1903        }
1904    }
1905}
1906
1907#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1908pub struct VectorMetricsUseV3Api {
1909    #[serde(default)]
1910    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1911    pub series: bool,
1912}
1913
1914impl Default for VectorMetricsUseV3Api {
1915    fn default() -> Self {
1916        Self { series: Default::default() }
1917    }
1918}
1919
1920/// Generation of default values for serde.
1921pub mod defaults {
1922    pub(super) fn default_bool<const V: bool>() -> bool {
1923        V
1924    }
1925    pub(super) fn default_i64<T, const V: i64>() -> T
1926    where
1927        T: TryFrom<i64>,
1928        <T as ::std::convert::TryFrom<i64>>::Error: ::std::fmt::Debug,
1929    {
1930        T::try_from(V).unwrap()
1931    }
1932    pub(super) fn default_u64<T, const V: u64>() -> T
1933    where
1934        T: TryFrom<u64>,
1935        <T as ::std::convert::TryFrom<u64>>::Error: ::std::fmt::Debug,
1936    {
1937        T::try_from(V).unwrap()
1938    }
1939    pub(super) fn datadog_configuration_dd_url() -> String {
1940        "https://app.datadoghq.com".to_string()
1941    }
1942    pub(super) fn datadog_configuration_dogstatsd_log_file_max_size() -> String {
1943        "10Mb".to_string()
1944    }
1945    pub(super) fn datadog_configuration_dogstatsd_tag_cardinality() -> String {
1946        "low".to_string()
1947    }
1948    pub(super) fn datadog_configuration_dogstatsd_windows_pipe_security_descriptor() -> String {
1949        "D:AI(A;;GA;;;WD)".to_string()
1950    }
1951    pub(super) fn datadog_configuration_forwarder_flush_to_disk_mem_ratio() -> f64 {
1952        0.5_f64
1953    }
1954    pub(super) fn datadog_configuration_forwarder_http_protocol() -> String {
1955        "auto".to_string()
1956    }
1957    pub(super) fn datadog_configuration_forwarder_storage_max_disk_ratio() -> f64 {
1958        0.8_f64
1959    }
1960    pub(super) fn datadog_configuration_histogram_aggregates() -> Vec<String> {
1961        vec![
1962            "max".to_string(),
1963            "median".to_string(),
1964            "avg".to_string(),
1965            "count".to_string(),
1966        ]
1967    }
1968    pub(super) fn datadog_configuration_histogram_percentiles() -> Vec<String> {
1969        vec!["0.95".to_string()]
1970    }
1971    pub(super) fn datadog_configuration_log_file_max_size() -> String {
1972        "10Mb".to_string()
1973    }
1974    pub(super) fn datadog_configuration_log_level() -> String {
1975        "info".to_string()
1976    }
1977    pub(super) fn datadog_configuration_min_tls_version() -> String {
1978        "tlsv1.2".to_string()
1979    }
1980    pub(super) fn datadog_configuration_serializer_compressor_kind() -> String {
1981        "zstd".to_string()
1982    }
1983    pub(super) fn datadog_configuration_site() -> String {
1984        "datadoghq.com".to_string()
1985    }
1986    pub(super) fn datadog_configuration_statsd_metric_namespace_blacklist() -> Vec<
1987        String,
1988    > {
1989        vec![
1990            "datadog.agent".to_string(),
1991            "datadog.dogstatsd".to_string(),
1992            "datadog.process".to_string(),
1993            "datadog.trace_agent".to_string(),
1994            "datadog.tracer".to_string(),
1995            "activemq".to_string(),
1996            "activemq_58".to_string(),
1997            "airflow".to_string(),
1998            "cassandra".to_string(),
1999            "confluent".to_string(),
2000            "hazelcast".to_string(),
2001            "hive".to_string(),
2002            "ignite".to_string(),
2003            "jboss".to_string(),
2004            "jvm".to_string(),
2005            "kafka".to_string(),
2006            "presto".to_string(),
2007            "sidekiq".to_string(),
2008            "solr".to_string(),
2009            "tomcat".to_string(),
2010            "runtime".to_string(),
2011        ]
2012    }
2013    pub(super) fn datadog_configuration_apm_config_errors_per_second() -> f64 {
2014        10_f64
2015    }
2016    pub(super) fn datadog_configuration_apm_config_target_traces_per_second() -> f64 {
2017        10_f64
2018    }
2019    pub(super) fn datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage() -> f64 {
2020        0_f64
2021    }
2022    pub(super) fn datadog_configuration_autoscaling_failover_metrics() -> Vec<String> {
2023        vec!["container.memory.usage".to_string(), "container.cpu.usage".to_string()]
2024    }
2025    pub(super) fn datadog_configuration_cluster_agent_kubernetes_service_name() -> String {
2026        "datadog-cluster-agent".to_string()
2027    }
2028    pub(super) fn datadog_configuration_data_plane_api_listen_address() -> String {
2029        "tcp://0.0.0.0:5100".to_string()
2030    }
2031    pub(super) fn datadog_configuration_data_plane_log_file() -> String {
2032        "/var/log/datadog/agent-data-plane.log".to_string()
2033    }
2034    pub(super) fn datadog_configuration_data_plane_secure_api_listen_address() -> String {
2035        "tcp://0.0.0.0:5101".to_string()
2036    }
2037    pub(super) fn datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint() -> String {
2038        "127.0.0.1:4319".to_string()
2039    }
2040    pub(super) fn datadog_configuration_otlp_config_metrics_tag_cardinality() -> String {
2041        "low".to_string()
2042    }
2043    pub(super) fn datadog_configuration_otlp_config_metrics_histograms_mode() -> String {
2044        "distributions".to_string()
2045    }
2046    pub(super) fn datadog_configuration_otlp_config_metrics_summaries_mode() -> String {
2047        "gauges".to_string()
2048    }
2049    pub(super) fn datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode() -> String {
2050        "to_delta".to_string()
2051    }
2052    pub(super) fn datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value() -> String {
2053        "auto".to_string()
2054    }
2055    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint() -> String {
2056        "localhost:4317".to_string()
2057    }
2058    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_transport() -> String {
2059        "tcp".to_string()
2060    }
2061    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_http_endpoint() -> String {
2062        "localhost:4318".to_string()
2063    }
2064    pub(super) fn datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage() -> f64 {
2065        100_f64
2066    }
2067    pub(super) fn datadog_configuration_use_v3_api_series_enabled() -> String {
2068        "datadog_only".to_string()
2069    }
2070}
2071
2072mod duration_defaults {
2073    pub(super) fn expected_tags_duration() -> std::time::Duration {
2074        std::time::Duration::from_nanos(0)
2075    }
2076    pub(super) fn tls_handshake_timeout() -> std::time::Duration {
2077        std::time::Duration::from_nanos(10000000000)
2078    }
2079}