From 928122004862e6b0219d5c23a3eb8b016256238d Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 9 Dec 2025 18:32:15 +0000 Subject: [PATCH] Regenerate client from commit 777ac07 of spec repo --- .generator/schemas/v2/openapi.yaml | 339 +++++++++--------- ..._observability-pipelines_CreatePipeline.rs | 29 +- ..._observability-pipelines_UpdatePipeline.rs | 29 +- ...bservability-pipelines_ValidatePipeline.rs | 29 +- src/datadogV2/model/mod.rs | 2 + ...ability_pipeline_add_env_vars_processor.rs | 22 +- ...rvability_pipeline_add_fields_processor.rs | 22 +- .../model_observability_pipeline_config.rs | 8 +- ...ability_pipeline_config_processor_group.rs | 140 ++++++++ ...observability_pipeline_custom_processor.rs | 22 +- ...ability_pipeline_custom_processor_remap.rs | 14 +- ...ability_pipeline_datadog_tags_processor.rs | 22 +- ...observability_pipeline_dedupe_processor.rs | 22 +- ...ity_pipeline_enrichment_table_processor.rs | 22 +- ...observability_pipeline_filter_processor.rs | 22 +- ...ity_pipeline_generate_metrics_processor.rs | 53 ++- ...vability_pipeline_ocsf_mapper_processor.rs | 22 +- ...rvability_pipeline_parse_grok_processor.rs | 22 +- ...rvability_pipeline_parse_json_processor.rs | 22 +- ..._observability_pipeline_quota_processor.rs | 37 +- ...observability_pipeline_reduce_processor.rs | 22 +- ...bility_pipeline_remove_fields_processor.rs | 22 +- ...bility_pipeline_rename_fields_processor.rs | 22 +- ...observability_pipeline_sample_processor.rs | 22 +- ...peline_sensitive_data_scanner_processor.rs | 22 +- ...servability_pipeline_throttle_processor.rs | 22 +- ...peline-returns-Bad-Request-response.frozen | 2 +- ...pipeline-returns-Bad-Request-response.json | 6 +- ...-a-new-pipeline-returns-OK-response.frozen | 2 +- ...te-a-new-pipeline-returns-OK-response.json | 10 +- ...pipeline-returns-Not-Found-response.frozen | 2 +- ...a-pipeline-returns-Not-Found-response.json | 2 +- ...lete-a-pipeline-returns-OK-response.frozen | 2 +- ...Delete-a-pipeline-returns-OK-response.json | 14 +- ...ecific-pipeline-returns-OK-response.frozen | 2 +- ...specific-pipeline-returns-OK-response.json | 16 +- ...elines-returns-Bad-Request-response.frozen | 2 +- ...ipelines-returns-Bad-Request-response.json | 2 +- .../List-pipelines-returns-OK-response.frozen | 2 +- .../List-pipelines-returns-OK-response.json | 14 +- ...peline-returns-Bad-Request-response.frozen | 2 +- ...pipeline-returns-Bad-Request-response.json | 18 +- ...pipeline-returns-Not-Found-response.frozen | 2 +- ...a-pipeline-returns-Not-Found-response.json | 4 +- ...date-a-pipeline-returns-OK-response.frozen | 2 +- ...Update-a-pipeline-returns-OK-response.json | 18 +- ...peline-returns-Bad-Request-response.frozen | 2 +- ...pipeline-returns-Bad-Request-response.json | 6 +- ...bility-pipeline-returns-OK-response.frozen | 2 +- ...vability-pipeline-returns-OK-response.json | 6 +- tests/scenarios/features/v2/given.json | 2 +- .../v2/observability_pipelines.feature | 20 +- 52 files changed, 695 insertions(+), 499 deletions(-) create mode 100644 src/datadogV2/model/model_observability_pipeline_config_processor_group.rs diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index dad178ca2..00618403a 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -34707,6 +34707,10 @@ components: description: The `add_env_vars` processor adds environment variable values to log events. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this processor in the pipeline. @@ -34717,14 +34721,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineAddEnvVarsProcessorType' variables: @@ -34736,8 +34732,8 @@ components: - id - type - include - - inputs - variables + - enabled type: object ObservabilityPipelineAddEnvVarsProcessorType: default: add_env_vars @@ -34766,6 +34762,10 @@ components: ObservabilityPipelineAddFieldsProcessor: description: The `add_fields` processor adds static key-value fields to logs. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of static fields (key-value pairs) that is added to each log event processed by this component. @@ -34783,14 +34783,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineAddFieldsProcessorType' required: @@ -34798,7 +34790,7 @@ components: - type - include - fields - - inputs + - enabled type: object ObservabilityPipelineAddFieldsProcessorType: default: add_fields @@ -35101,15 +35093,25 @@ components: $ref: '#/components/schemas/ObservabilityPipelineConfigDestinationItem' type: array processors: - description: A list of processors that transform or enrich log data. + description: A list of processor groups that transform or enrich log data. example: - - id: filter-processor + - enabled: true + id: my-processor-group include: service:my-service inputs: - datadog-agent-source - type: filter + processors: + - enabled: true + id: filter-processor + include: status:error + type: filter + - enabled: true + field: message + id: json-processor + include: '*' + type: parse_json items: - $ref: '#/components/schemas/ObservabilityPipelineConfigProcessorItem' + $ref: '#/components/schemas/ObservabilityPipelineConfigProcessorGroup' type: array sources: description: A list of configured data sources for the pipeline. @@ -35145,6 +35147,72 @@ components: - $ref: '#/components/schemas/ObservabilityPipelineAmazonSecurityLakeDestination' - $ref: '#/components/schemas/ObservabilityPipelineCrowdStrikeNextGenSiemDestination' - $ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestination' + ObservabilityPipelineConfigProcessorGroup: + description: A group of processors. + example: + enabled: true + id: my-processor-group + include: service:my-service + inputs: + - datadog-agent-source + processors: + - fields: + - name: env + value: prod + id: add-fields-processor + include: '*' + type: add_fields + - enabled: true + id: filter-processor + include: status:error + type: filter + properties: + enabled: + description: Whether this processor group is enabled. + example: true + type: boolean + id: + description: The unique identifier for the processor group. + example: grouped-processors + type: string + include: + description: Conditional expression for when this processor group should + execute. + example: service:my-service + type: string + inputs: + description: A list of IDs for components whose output is used as the input + for this processor group. + example: + - datadog-agent-source + items: + type: string + type: array + processors: + description: Processors applied sequentially within this group. Events flow + through each processor in order. + example: + - enabled: true + fields: + - name: env + value: prod + id: add-fields-processor + include: '*' + type: add_fields + - enabled: true + id: filter-processor + include: status:error + type: filter + items: + $ref: '#/components/schemas/ObservabilityPipelineConfigProcessorItem' + type: array + required: + - id + - include + - inputs + - processors + - enabled + type: object ObservabilityPipelineConfigProcessorItem: description: A processor for the pipeline. oneOf: @@ -35262,6 +35330,10 @@ components: Remap Language (VRL)](https://vector.dev/docs/reference/vrl/) scripts with advanced filtering capabilities. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this processor. example: remap-vrl-processor @@ -35273,14 +35345,6 @@ components: processor. example: '*' type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - datadog-agent-source - items: - type: string - type: array remaps: description: Array of VRL remap rules. items: @@ -35294,7 +35358,7 @@ components: - type - include - remaps - - inputs + - enabled type: object ObservabilityPipelineCustomProcessorRemap: description: Defines a single VRL remap rule with its own filtering and transformation @@ -35325,7 +35389,6 @@ components: - include - name - source - - enabled - drop_on_error type: object ObservabilityPipelineCustomProcessorType: @@ -35434,6 +35497,10 @@ components: properties: action: $ref: '#/components/schemas/ObservabilityPipelineDatadogTagsProcessorAction' + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -35445,14 +35512,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array keys: description: A list of tag keys. example: @@ -35473,7 +35532,7 @@ components: - mode - action - keys - - inputs + - enabled type: object ObservabilityPipelineDatadogTagsProcessorAction: description: The action to take on tags with matching keys. @@ -35519,6 +35578,10 @@ components: ObservabilityPipelineDedupeProcessor: description: The `dedupe` processor removes duplicate fields in log events. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of log field paths to check for duplicates. example: @@ -35536,14 +35599,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - parse-json-processor - items: - type: string - type: array mode: $ref: '#/components/schemas/ObservabilityPipelineDedupeProcessorMode' type: @@ -35552,9 +35607,9 @@ components: - id - type - include - - inputs - fields - mode + - enabled type: object ObservabilityPipelineDedupeProcessorMode: description: The deduplication mode to apply to the fields. @@ -35760,6 +35815,10 @@ components: description: The `enrichment_table` processor enriches logs using a static CSV file or GeoIP database. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean file: $ref: '#/components/schemas/ObservabilityPipelineEnrichmentTableFile' geoip: @@ -35773,14 +35832,6 @@ components: targets. example: source:my-source type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - add-fields-processor - items: - type: string - type: array target: description: Path where enrichment results should be stored in the log. example: enriched.geoip @@ -35791,8 +35842,8 @@ components: - id - type - include - - inputs - target + - enabled type: object ObservabilityPipelineEnrichmentTableProcessorType: default: enrichment_table @@ -35823,6 +35874,10 @@ components: on a Datadog search query. Logs that match the `include` query are passed through; others are discarded. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -35835,21 +35890,13 @@ components: components; others are dropped. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineFilterProcessorType' required: - id - type - include - - inputs + - enabled type: object ObservabilityPipelineFilterProcessorType: default: filter @@ -35929,6 +35976,10 @@ components: Metrics can be counters, gauges, or distributions and optionally grouped by log fields.' properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline. @@ -35939,14 +35990,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this processor. - example: - - source-id - items: - type: string - type: array metrics: description: Configuration for generating individual metrics. items: @@ -35957,9 +36000,7 @@ components: required: - id - type - - inputs - - include - - metrics + - enabled type: object ObservabilityPipelineGenerateMetricsProcessorType: default: generate_datadog_metrics @@ -36556,6 +36597,10 @@ components: description: The `ocsf_mapper` processor transforms logs into the OCSF schema using a predefined mapping configuration. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline. @@ -36566,14 +36611,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this processor. - example: - - filter-processor - items: - type: string - type: array mappings: description: A list of mapping rules to convert events to the OCSF format. items: @@ -36585,8 +36622,8 @@ components: - id - type - include - - inputs - mappings + - enabled type: object ObservabilityPipelineOcsfMapperProcessorMapping: description: Defines how specific events are transformed to OCSF using a mapping @@ -36691,6 +36728,10 @@ components: by Datadog. example: true type: boolean + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: A unique identifier for this processor. example: parse-grok-processor @@ -36700,14 +36741,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array rules: description: The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match @@ -36721,8 +36754,8 @@ components: - id - type - include - - inputs - rules + - enabled type: object ObservabilityPipelineParseGrokProcessorRule: description: 'A Grok parsing rule used in the `parse_grok` processor. Each rule @@ -36807,6 +36840,10 @@ components: and flattens it into the event. This is useful when logs contain embedded JSON as a string. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean field: description: The name of the log field that contains a JSON string. example: message @@ -36822,14 +36859,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineParseJSONProcessorType' required: @@ -36837,7 +36866,7 @@ components: - type - include - field - - inputs + - enabled type: object ObservabilityPipelineParseJSONProcessorType: default: parse_json @@ -36870,6 +36899,10 @@ components: the filter query continue through the pipeline. example: false type: boolean + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -36885,14 +36918,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array limit: $ref: '#/components/schemas/ObservabilityPipelineQuotaProcessorLimit' name: @@ -36922,9 +36947,8 @@ components: - type - include - name - - drop_events - limit - - inputs + - enabled type: object ObservabilityPipelineQuotaProcessorLimit: description: The maximum amount of data or number of events allowed before the @@ -37000,6 +37024,10 @@ components: description: The `reduce` processor aggregates and merges logs based on matching keys and merge strategies. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean group_by: description: A list of fields used to group log events for merging. example: @@ -37017,14 +37045,6 @@ components: targets. example: env:prod type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - parse-json-processor - items: - type: string - type: array merge_strategies: description: List of merge strategies defining how values from grouped events should be combined. @@ -37037,9 +37057,9 @@ components: - id - type - include - - inputs - group_by - merge_strategies + - enabled type: object ObservabilityPipelineReduceProcessorMergeStrategy: description: Defines how a specific field should be merged across grouped events. @@ -37096,6 +37116,10 @@ components: ObservabilityPipelineRemoveFieldsProcessor: description: The `remove_fields` processor deletes specified fields from logs. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of field names to be removed from each log event. example: @@ -37115,13 +37139,6 @@ components: targets. example: service:my-service type: string - inputs: - description: The `PipelineRemoveFieldsProcessor` `inputs`. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineRemoveFieldsProcessorType' required: @@ -37129,7 +37146,7 @@ components: - type - include - fields - - inputs + - enabled type: object ObservabilityPipelineRemoveFieldsProcessorType: default: remove_fields @@ -37143,6 +37160,10 @@ components: ObservabilityPipelineRenameFieldsProcessor: description: The `rename_fields` processor changes field names. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean fields: description: A list of rename rules specifying which fields to rename in the event, what to rename them to, and whether to preserve the original @@ -37161,14 +37182,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array type: $ref: '#/components/schemas/ObservabilityPipelineRenameFieldsProcessorType' required: @@ -37176,7 +37189,7 @@ components: - type - include - fields - - inputs + - enabled type: object ObservabilityPipelineRenameFieldsProcessorField: description: Defines how to rename a field in log events. @@ -37282,6 +37295,10 @@ components: description: The `sample` processor allows probabilistic sampling of logs at a fixed rate. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` @@ -37293,14 +37310,6 @@ components: targets. example: service:my-service type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - datadog-agent-source - items: - type: string - type: array percentage: description: The percentage of logs to sample. example: 10.0 @@ -37318,7 +37327,7 @@ components: - id - type - include - - inputs + - enabled type: object ObservabilityPipelineSampleProcessorType: default: sample @@ -37333,6 +37342,10 @@ components: description: The `sensitive_data_scanner` processor detects and optionally redacts sensitive data in log events. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean id: description: The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream @@ -37344,14 +37357,6 @@ components: targets. example: source:prod type: string - inputs: - description: A list of component IDs whose output is used as the `input` - for this component. - example: - - parse-json-processor - items: - type: string - type: array rules: description: A list of rules for identifying and acting on sensitive data patterns. @@ -37364,8 +37369,8 @@ components: - id - type - include - - inputs - rules + - enabled type: object ObservabilityPipelineSensitiveDataScannerProcessorAction: description: Defines what action to take when sensitive data is matched. @@ -38326,6 +38331,10 @@ components: description: The `throttle` processor limits the number of events that pass through over a given time window. properties: + enabled: + description: Whether this processor is enabled. + example: true + type: boolean group_by: description: Optional list of fields used to group events before the threshold has been reached. @@ -38343,14 +38352,6 @@ components: targets. example: env:prod type: string - inputs: - description: A list of component IDs whose output is used as the input for - this processor. - example: - - datadog-agent-source - items: - type: string - type: array threshold: description: the number of events allowed in a given time window. Events sent after the threshold has been reached, are dropped. @@ -38368,9 +38369,9 @@ components: - id - type - include - - inputs - threshold - window + - enabled type: object ObservabilityPipelineThrottleProcessorType: default: throttle diff --git a/examples/v2_observability-pipelines_CreatePipeline.rs b/examples/v2_observability-pipelines_CreatePipeline.rs index fa74ab932..20e2a2c49 100644 --- a/examples/v2_observability-pipelines_CreatePipeline.rs +++ b/examples/v2_observability-pipelines_CreatePipeline.rs @@ -3,6 +3,7 @@ use datadog_api_client::datadog; use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPipelinesAPI; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem; +use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorGroup; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineDataAttributes; @@ -27,7 +28,7 @@ async fn main() { Box::new( ObservabilityPipelineDatadogLogsDestination::new( "datadog-logs-destination".to_string(), - vec!["filter-processor".to_string()], + vec!["my-processor-group".to_string()], ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS, ), ), @@ -45,15 +46,23 @@ async fn main() { ], ).processors( vec![ - ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( - Box::new( - ObservabilityPipelineFilterProcessor::new( - "filter-processor".to_string(), - "service:my-service".to_string(), - vec!["datadog-agent-source".to_string()], - ObservabilityPipelineFilterProcessorType::FILTER, - ), - ), + ObservabilityPipelineConfigProcessorGroup::new( + true, + "my-processor-group".to_string(), + "service:my-service".to_string(), + vec!["datadog-agent-source".to_string()], + vec![ + ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( + Box::new( + ObservabilityPipelineFilterProcessor::new( + true, + "filter-processor".to_string(), + "status:error".to_string(), + ObservabilityPipelineFilterProcessorType::FILTER, + ), + ), + ) + ], ) ], ), diff --git a/examples/v2_observability-pipelines_UpdatePipeline.rs b/examples/v2_observability-pipelines_UpdatePipeline.rs index ba3f2091d..316fafce8 100644 --- a/examples/v2_observability-pipelines_UpdatePipeline.rs +++ b/examples/v2_observability-pipelines_UpdatePipeline.rs @@ -4,6 +4,7 @@ use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPip use datadog_api_client::datadogV2::model::ObservabilityPipeline; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem; +use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorGroup; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineData; @@ -29,7 +30,7 @@ async fn main() { Box::new( ObservabilityPipelineDatadogLogsDestination::new( "updated-datadog-logs-destination-id".to_string(), - vec!["filter-processor".to_string()], + vec!["my-processor-group".to_string()], ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS, ), ), @@ -47,15 +48,23 @@ async fn main() { ], ).processors( vec![ - ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( - Box::new( - ObservabilityPipelineFilterProcessor::new( - "filter-processor".to_string(), - "service:my-service".to_string(), - vec!["datadog-agent-source".to_string()], - ObservabilityPipelineFilterProcessorType::FILTER, - ), - ), + ObservabilityPipelineConfigProcessorGroup::new( + true, + "my-processor-group".to_string(), + "service:my-service".to_string(), + vec!["datadog-agent-source".to_string()], + vec![ + ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( + Box::new( + ObservabilityPipelineFilterProcessor::new( + true, + "filter-processor".to_string(), + "status:error".to_string(), + ObservabilityPipelineFilterProcessorType::FILTER, + ), + ), + ) + ], ) ], ), diff --git a/examples/v2_observability-pipelines_ValidatePipeline.rs b/examples/v2_observability-pipelines_ValidatePipeline.rs index 79ad0c621..b0ebe11c5 100644 --- a/examples/v2_observability-pipelines_ValidatePipeline.rs +++ b/examples/v2_observability-pipelines_ValidatePipeline.rs @@ -3,6 +3,7 @@ use datadog_api_client::datadog; use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPipelinesAPI; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem; +use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorGroup; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem; use datadog_api_client::datadogV2::model::ObservabilityPipelineDataAttributes; @@ -27,7 +28,7 @@ async fn main() { Box::new( ObservabilityPipelineDatadogLogsDestination::new( "datadog-logs-destination".to_string(), - vec!["filter-processor".to_string()], + vec!["my-processor-group".to_string()], ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS, ), ), @@ -45,15 +46,23 @@ async fn main() { ], ).processors( vec![ - ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( - Box::new( - ObservabilityPipelineFilterProcessor::new( - "filter-processor".to_string(), - "service:my-service".to_string(), - vec!["datadog-agent-source".to_string()], - ObservabilityPipelineFilterProcessorType::FILTER, - ), - ), + ObservabilityPipelineConfigProcessorGroup::new( + true, + "my-processor-group".to_string(), + "service:my-service".to_string(), + vec!["datadog-agent-source".to_string()], + vec![ + ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor( + Box::new( + ObservabilityPipelineFilterProcessor::new( + true, + "filter-processor".to_string(), + "status:error".to_string(), + ObservabilityPipelineFilterProcessorType::FILTER, + ), + ), + ) + ], ) ], ), diff --git a/src/datadogV2/model/mod.rs b/src/datadogV2/model/mod.rs index 9b70a01ff..74a549a64 100644 --- a/src/datadogV2/model/mod.rs +++ b/src/datadogV2/model/mod.rs @@ -5040,6 +5040,8 @@ pub mod model_observability_pipeline_google_pub_sub_destination_type; pub use self::model_observability_pipeline_google_pub_sub_destination_type::ObservabilityPipelineGooglePubSubDestinationType; pub mod model_observability_pipeline_config_destination_item; pub use self::model_observability_pipeline_config_destination_item::ObservabilityPipelineConfigDestinationItem; +pub mod model_observability_pipeline_config_processor_group; +pub use self::model_observability_pipeline_config_processor_group::ObservabilityPipelineConfigProcessorGroup; pub mod model_observability_pipeline_filter_processor; pub use self::model_observability_pipeline_filter_processor::ObservabilityPipelineFilterProcessor; pub mod model_observability_pipeline_filter_processor_type; diff --git a/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs b/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs index 5d9479f42..3e39bb0cf 100644 --- a/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_add_env_vars_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineAddEnvVarsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this processor in the pipeline. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `add_env_vars`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineAddEnvVarsProcessorType, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineAddEnvVarsProcessor { impl ObservabilityPipelineAddEnvVarsProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineAddEnvVarsProcessorType, variables: Vec, ) -> ObservabilityPipelineAddEnvVarsProcessor { ObservabilityPipelineAddEnvVarsProcessor { + enabled, id, include, - inputs, type_, variables, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddEnvVarsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineAddEnvVarsProcessorType, > = None; @@ -95,15 +95,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddEnvVarsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -125,16 +125,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddEnvVarsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let variables = variables.ok_or_else(|| M::Error::missing_field("variables"))?; let content = ObservabilityPipelineAddEnvVarsProcessor { + enabled, id, include, - inputs, type_, variables, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs b/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs index baca87ceb..46bf9f1b2 100644 --- a/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_add_fields_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineAddFieldsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of static fields (key-value pairs) that is added to each log event processed by this component. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineAddFieldsProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `add_fields`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineAddFieldsProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineAddFieldsProcessor { impl ObservabilityPipelineAddFieldsProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineAddFieldsProcessorType, ) -> ObservabilityPipelineAddFieldsProcessor { ObservabilityPipelineAddFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,12 +78,12 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option< Vec, > = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineAddFieldsProcessorType, > = None; @@ -95,6 +95,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -104,9 +107,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -125,17 +125,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAddFieldsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineAddFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_config.rs b/src/datadogV2/model/model_observability_pipeline_config.rs index efc97d17a..d6fe63c42 100644 --- a/src/datadogV2/model/model_observability_pipeline_config.rs +++ b/src/datadogV2/model/model_observability_pipeline_config.rs @@ -14,9 +14,9 @@ pub struct ObservabilityPipelineConfig { /// A list of destination components where processed logs are sent. #[serde(rename = "destinations")] pub destinations: Vec, - /// A list of processors that transform or enrich log data. + /// A list of processor groups that transform or enrich log data. #[serde(rename = "processors")] - pub processors: Option>, + pub processors: Option>, /// A list of configured data sources for the pipeline. #[serde(rename = "sources")] pub sources: Vec, @@ -43,7 +43,7 @@ impl ObservabilityPipelineConfig { pub fn processors( mut self, - value: Vec, + value: Vec, ) -> Self { self.processors = Some(value); self @@ -79,7 +79,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineConfig { Vec, > = None; let mut processors: Option< - Vec, + Vec, > = None; let mut sources: Option< Vec, diff --git a/src/datadogV2/model/model_observability_pipeline_config_processor_group.rs b/src/datadogV2/model/model_observability_pipeline_config_processor_group.rs new file mode 100644 index 000000000..0714b5949 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_config_processor_group.rs @@ -0,0 +1,140 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// A group of processors. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct ObservabilityPipelineConfigProcessorGroup { + /// Whether this processor group is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, + /// The unique identifier for the processor group. + #[serde(rename = "id")] + pub id: String, + /// Conditional expression for when this processor group should execute. + #[serde(rename = "include")] + pub include: String, + /// A list of IDs for components whose output is used as the input for this processor group. + #[serde(rename = "inputs")] + pub inputs: Vec, + /// Processors applied sequentially within this group. Events flow through each processor in order. + #[serde(rename = "processors")] + pub processors: Vec, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl ObservabilityPipelineConfigProcessorGroup { + pub fn new( + enabled: bool, + id: String, + include: String, + inputs: Vec, + processors: Vec, + ) -> ObservabilityPipelineConfigProcessorGroup { + ObservabilityPipelineConfigProcessorGroup { + enabled, + id, + include, + inputs, + processors, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineConfigProcessorGroup { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct ObservabilityPipelineConfigProcessorGroupVisitor; + impl<'a> Visitor<'a> for ObservabilityPipelineConfigProcessorGroupVisitor { + type Value = ObservabilityPipelineConfigProcessorGroup; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut enabled: Option = None; + let mut id: Option = None; + let mut include: Option = None; + let mut inputs: Option> = None; + let mut processors: Option< + Vec, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "include" => { + include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "inputs" => { + inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "processors" => { + processors = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let include = include.ok_or_else(|| M::Error::missing_field("include"))?; + let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; + let processors = processors.ok_or_else(|| M::Error::missing_field("processors"))?; + + let content = ObservabilityPipelineConfigProcessorGroup { + enabled, + id, + include, + inputs, + processors, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(ObservabilityPipelineConfigProcessorGroupVisitor) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_custom_processor.rs b/src/datadogV2/model/model_observability_pipeline_custom_processor.rs index 835808cc5..f121d2184 100644 --- a/src/datadogV2/model/model_observability_pipeline_custom_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_custom_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineCustomProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this processor. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. This field should always be set to `*` for the custom_processor processor. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// Array of VRL remap rules. #[serde(rename = "remaps")] pub remaps: Vec, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineCustomProcessor { impl ObservabilityPipelineCustomProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, remaps: Vec, type_: crate::datadogV2::model::ObservabilityPipelineCustomProcessorType, ) -> ObservabilityPipelineCustomProcessor { ObservabilityPipelineCustomProcessor { + enabled, id, include, - inputs, remaps, type_, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut remaps: Option< Vec, > = None; @@ -95,15 +95,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "remaps" => { remaps = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -125,16 +125,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let remaps = remaps.ok_or_else(|| M::Error::missing_field("remaps"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineCustomProcessor { + enabled, id, include, - inputs, remaps, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs b/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs index 93d0d893b..231556a58 100644 --- a/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs +++ b/src/datadogV2/model/model_observability_pipeline_custom_processor_remap.rs @@ -16,7 +16,7 @@ pub struct ObservabilityPipelineCustomProcessorRemap { pub drop_on_error: bool, /// Whether this remap rule is enabled. #[serde(rename = "enabled")] - pub enabled: bool, + pub enabled: Option, /// A Datadog search query used to filter events for this specific remap rule. #[serde(rename = "include")] pub include: String, @@ -36,14 +36,13 @@ pub struct ObservabilityPipelineCustomProcessorRemap { impl ObservabilityPipelineCustomProcessorRemap { pub fn new( drop_on_error: bool, - enabled: bool, include: String, name: String, source: String, ) -> ObservabilityPipelineCustomProcessorRemap { ObservabilityPipelineCustomProcessorRemap { drop_on_error, - enabled, + enabled: None, include, name, source, @@ -52,6 +51,11 @@ impl ObservabilityPipelineCustomProcessorRemap { } } + pub fn enabled(mut self, value: bool) -> Self { + self.enabled = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -96,6 +100,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessorRemap { Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "enabled" => { + if v.is_null() { + continue; + } enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { @@ -116,7 +123,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCustomProcessorRemap { } let drop_on_error = drop_on_error.ok_or_else(|| M::Error::missing_field("drop_on_error"))?; - let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; let name = name.ok_or_else(|| M::Error::missing_field("name"))?; let source = source.ok_or_else(|| M::Error::missing_field("source"))?; diff --git a/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs b/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs index fd8da1208..a324e7f2f 100644 --- a/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_datadog_tags_processor.rs @@ -14,15 +14,15 @@ pub struct ObservabilityPipelineDatadogTagsProcessor { /// The action to take on tags with matching keys. #[serde(rename = "action")] pub action: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorAction, + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// A list of tag keys. #[serde(rename = "keys")] pub keys: Vec, @@ -42,18 +42,18 @@ pub struct ObservabilityPipelineDatadogTagsProcessor { impl ObservabilityPipelineDatadogTagsProcessor { pub fn new( action: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorAction, + enabled: bool, id: String, include: String, - inputs: Vec, keys: Vec, mode: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorMode, type_: crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorType, ) -> ObservabilityPipelineDatadogTagsProcessor { ObservabilityPipelineDatadogTagsProcessor { action, + enabled, id, include, - inputs, keys, mode, type_, @@ -91,9 +91,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogTagsProcessor { let mut action: Option< crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorAction, > = None; + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut keys: Option> = None; let mut mode: Option< crate::datadogV2::model::ObservabilityPipelineDatadogTagsProcessorMode, @@ -120,15 +120,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogTagsProcessor { } } } + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "keys" => { keys = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -162,18 +162,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogTagsProcessor { } } let action = action.ok_or_else(|| M::Error::missing_field("action"))?; + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let keys = keys.ok_or_else(|| M::Error::missing_field("keys"))?; let mode = mode.ok_or_else(|| M::Error::missing_field("mode"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineDatadogTagsProcessor { action, + enabled, id, include, - inputs, keys, mode, type_, diff --git a/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs b/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs index 0b13cb2c5..2200a14cb 100644 --- a/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_dedupe_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineDedupeProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of log field paths to check for duplicates. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineDedupeProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The deduplication mode to apply to the fields. #[serde(rename = "mode")] pub mode: crate::datadogV2::model::ObservabilityPipelineDedupeProcessorMode, @@ -38,18 +38,18 @@ pub struct ObservabilityPipelineDedupeProcessor { impl ObservabilityPipelineDedupeProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, mode: crate::datadogV2::model::ObservabilityPipelineDedupeProcessorMode, type_: crate::datadogV2::model::ObservabilityPipelineDedupeProcessorType, ) -> ObservabilityPipelineDedupeProcessor { ObservabilityPipelineDedupeProcessor { + enabled, fields, id, include, - inputs, mode, type_, additional_properties: std::collections::BTreeMap::new(), @@ -83,10 +83,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut mode: Option< crate::datadogV2::model::ObservabilityPipelineDedupeProcessorMode, > = None; @@ -101,6 +101,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -110,9 +113,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "mode" => { mode = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _mode) = mode { @@ -142,18 +142,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDedupeProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let mode = mode.ok_or_else(|| M::Error::missing_field("mode"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineDedupeProcessor { + enabled, fields, id, include, - inputs, mode, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs b/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs index 55d4f1567..0d31ef277 100644 --- a/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_enrichment_table_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineEnrichmentTableProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// Defines a static enrichment table loaded from a CSV file. #[serde(rename = "file")] pub file: Option, @@ -23,9 +26,6 @@ pub struct ObservabilityPipelineEnrichmentTableProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// Path where enrichment results should be stored in the log. #[serde(rename = "target")] pub target: String, @@ -41,18 +41,18 @@ pub struct ObservabilityPipelineEnrichmentTableProcessor { impl ObservabilityPipelineEnrichmentTableProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, target: String, type_: crate::datadogV2::model::ObservabilityPipelineEnrichmentTableProcessorType, ) -> ObservabilityPipelineEnrichmentTableProcessor { ObservabilityPipelineEnrichmentTableProcessor { + enabled, file: None, geoip: None, id, include, - inputs, target, type_, additional_properties: std::collections::BTreeMap::new(), @@ -102,6 +102,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut file: Option< crate::datadogV2::model::ObservabilityPipelineEnrichmentTableFile, > = None; @@ -110,7 +111,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { > = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut target: Option = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineEnrichmentTableProcessorType, @@ -123,6 +123,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "file" => { if v.is_null() { continue; @@ -141,9 +144,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "target" => { target = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -165,18 +165,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineEnrichmentTableProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let target = target.ok_or_else(|| M::Error::missing_field("target"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineEnrichmentTableProcessor { + enabled, file, geoip, id, include, - inputs, target, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_filter_processor.rs b/src/datadogV2/model/model_observability_pipeline_filter_processor.rs index 9087eeb3a..149f13092 100644 --- a/src/datadogV2/model/model_observability_pipeline_filter_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_filter_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineFilterProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs should pass through the filter. Logs that match this query continue to downstream components; others are dropped. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `filter`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineFilterProcessorType, @@ -32,15 +32,15 @@ pub struct ObservabilityPipelineFilterProcessor { impl ObservabilityPipelineFilterProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineFilterProcessorType, ) -> ObservabilityPipelineFilterProcessor { ObservabilityPipelineFilterProcessor { + enabled, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -73,9 +73,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineFilterProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineFilterProcessorType, > = None; @@ -87,15 +87,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineFilterProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -114,15 +114,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineFilterProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineFilterProcessor { + enabled, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs b/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs index 95b2190cd..2816676bd 100644 --- a/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_generate_metrics_processor.rs @@ -12,18 +12,18 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineGenerateMetricsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] - pub include: String, - /// A list of component IDs whose output is used as the `input` for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, + pub include: Option, /// Configuration for generating individual metrics. #[serde(rename = "metrics")] - pub metrics: Vec, + pub metrics: Option>, /// The processor type. Always `generate_datadog_metrics`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineGenerateMetricsProcessorType, @@ -36,23 +36,34 @@ pub struct ObservabilityPipelineGenerateMetricsProcessor { impl ObservabilityPipelineGenerateMetricsProcessor { pub fn new( + enabled: bool, id: String, - include: String, - inputs: Vec, - metrics: Vec, type_: crate::datadogV2::model::ObservabilityPipelineGenerateMetricsProcessorType, ) -> ObservabilityPipelineGenerateMetricsProcessor { ObservabilityPipelineGenerateMetricsProcessor { + enabled, id, - include, - inputs, - metrics, + include: None, + metrics: None, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } + pub fn include(mut self, value: String) -> Self { + self.include = Some(value); + self + } + + pub fn metrics( + mut self, + value: Vec, + ) -> Self { + self.metrics = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -79,9 +90,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGenerateMetricsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut metrics: Option< Vec, > = None; @@ -96,16 +107,22 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGenerateMetricsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { + if v.is_null() { + continue; + } include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "metrics" => { + if v.is_null() { + continue; + } metrics = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "type" => { @@ -126,16 +143,14 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGenerateMetricsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; - let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; - let metrics = metrics.ok_or_else(|| M::Error::missing_field("metrics"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineGenerateMetricsProcessor { + enabled, id, include, - inputs, metrics, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs b/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs index 58aeb7fb7..e6e3c7197 100644 --- a/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_ocsf_mapper_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineOcsfMapperProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// A list of mapping rules to convert events to the OCSF format. #[serde(rename = "mappings")] pub mappings: Vec, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineOcsfMapperProcessor { impl ObservabilityPipelineOcsfMapperProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, mappings: Vec, type_: crate::datadogV2::model::ObservabilityPipelineOcsfMapperProcessorType, ) -> ObservabilityPipelineOcsfMapperProcessor { ObservabilityPipelineOcsfMapperProcessor { + enabled, id, include, - inputs, mappings, type_, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOcsfMapperProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut mappings: Option< Vec, > = None; @@ -95,15 +95,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOcsfMapperProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "mappings" => { mappings = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -125,16 +125,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOcsfMapperProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let mappings = mappings.ok_or_else(|| M::Error::missing_field("mappings"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineOcsfMapperProcessor { + enabled, id, include, - inputs, mappings, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs b/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs index 1106e8dfd..3cf031ddb 100644 --- a/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_parse_grok_processor.rs @@ -14,15 +14,15 @@ pub struct ObservabilityPipelineParseGrokProcessor { /// If set to `true`, disables the default Grok rules provided by Datadog. #[serde(rename = "disable_library_rules")] pub disable_library_rules: Option, + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A unique identifier for this processor. #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied. #[serde(rename = "rules")] pub rules: Vec, @@ -38,17 +38,17 @@ pub struct ObservabilityPipelineParseGrokProcessor { impl ObservabilityPipelineParseGrokProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, rules: Vec, type_: crate::datadogV2::model::ObservabilityPipelineParseGrokProcessorType, ) -> ObservabilityPipelineParseGrokProcessor { ObservabilityPipelineParseGrokProcessor { disable_library_rules: None, + enabled, id, include, - inputs, rules, type_, additional_properties: std::collections::BTreeMap::new(), @@ -88,9 +88,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseGrokProcessor { M: MapAccess<'a>, { let mut disable_library_rules: Option = None; + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut rules: Option< Vec, > = None; @@ -112,15 +112,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseGrokProcessor { disable_library_rules = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "rules" => { rules = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -142,17 +142,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseGrokProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let rules = rules.ok_or_else(|| M::Error::missing_field("rules"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineParseGrokProcessor { disable_library_rules, + enabled, id, include, - inputs, rules, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs b/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs index f9059752a..ceb7c9679 100644 --- a/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_parse_json_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineParseJSONProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The name of the log field that contains a JSON string. #[serde(rename = "field")] pub field: String, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineParseJSONProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `parse_json`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineParseJSONProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineParseJSONProcessor { impl ObservabilityPipelineParseJSONProcessor { pub fn new( + enabled: bool, field: String, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineParseJSONProcessorType, ) -> ObservabilityPipelineParseJSONProcessor { ObservabilityPipelineParseJSONProcessor { + enabled, field, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,10 +78,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut field: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineParseJSONProcessorType, > = None; @@ -93,6 +93,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "field" => { field = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -102,9 +105,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -123,17 +123,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineParseJSONProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let field = field.ok_or_else(|| M::Error::missing_field("field"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineParseJSONProcessor { + enabled, field, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_quota_processor.rs b/src/datadogV2/model/model_observability_pipeline_quota_processor.rs index 680ef9390..9633e287d 100644 --- a/src/datadogV2/model/model_observability_pipeline_quota_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_quota_processor.rs @@ -13,7 +13,10 @@ use std::fmt::{self, Formatter}; pub struct ObservabilityPipelineQuotaProcessor { /// If set to `true`, logs that matched the quota filter and sent after the quota has been met are dropped; only logs that did not match the filter query continue through the pipeline. #[serde(rename = "drop_events")] - pub drop_events: bool, + pub drop_events: Option, + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, @@ -23,9 +26,6 @@ pub struct ObservabilityPipelineQuotaProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events. #[serde(rename = "limit")] pub limit: crate::datadogV2::model::ObservabilityPipelineQuotaProcessorLimit, @@ -58,20 +58,19 @@ pub struct ObservabilityPipelineQuotaProcessor { impl ObservabilityPipelineQuotaProcessor { pub fn new( - drop_events: bool, + enabled: bool, id: String, include: String, - inputs: Vec, limit: crate::datadogV2::model::ObservabilityPipelineQuotaProcessorLimit, name: String, type_: crate::datadogV2::model::ObservabilityPipelineQuotaProcessorType, ) -> ObservabilityPipelineQuotaProcessor { ObservabilityPipelineQuotaProcessor { - drop_events, + drop_events: None, + enabled, id, ignore_when_missing_partitions: None, include, - inputs, limit, name, overflow_action: None, @@ -83,6 +82,11 @@ impl ObservabilityPipelineQuotaProcessor { } } + pub fn drop_events(mut self, value: bool) -> Self { + self.drop_events = Some(value); + self + } + pub fn ignore_when_missing_partitions(mut self, value: bool) -> Self { self.ignore_when_missing_partitions = Some(value); self @@ -136,10 +140,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { M: MapAccess<'a>, { let mut drop_events: Option = None; + let mut enabled: Option = None; let mut id: Option = None; let mut ignore_when_missing_partitions: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut limit: Option< crate::datadogV2::model::ObservabilityPipelineQuotaProcessorLimit, > = None; @@ -163,9 +167,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { "drop_events" => { + if v.is_null() { + continue; + } drop_events = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -179,9 +189,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "limit" => { limit = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -234,21 +241,19 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineQuotaProcessor { } } } - let drop_events = - drop_events.ok_or_else(|| M::Error::missing_field("drop_events"))?; + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let limit = limit.ok_or_else(|| M::Error::missing_field("limit"))?; let name = name.ok_or_else(|| M::Error::missing_field("name"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineQuotaProcessor { drop_events, + enabled, id, ignore_when_missing_partitions, include, - inputs, limit, name, overflow_action, diff --git a/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs b/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs index f9de5f3e9..9a45888c2 100644 --- a/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_reduce_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineReduceProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of fields used to group log events for merging. #[serde(rename = "group_by")] pub group_by: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineReduceProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// List of merge strategies defining how values from grouped events should be combined. #[serde(rename = "merge_strategies")] pub merge_strategies: @@ -39,20 +39,20 @@ pub struct ObservabilityPipelineReduceProcessor { impl ObservabilityPipelineReduceProcessor { pub fn new( + enabled: bool, group_by: Vec, id: String, include: String, - inputs: Vec, merge_strategies: Vec< crate::datadogV2::model::ObservabilityPipelineReduceProcessorMergeStrategy, >, type_: crate::datadogV2::model::ObservabilityPipelineReduceProcessorType, ) -> ObservabilityPipelineReduceProcessor { ObservabilityPipelineReduceProcessor { + enabled, group_by, id, include, - inputs, merge_strategies, type_, additional_properties: std::collections::BTreeMap::new(), @@ -86,10 +86,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut group_by: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut merge_strategies: Option< Vec, > = None; @@ -104,6 +104,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "group_by" => { group_by = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -113,9 +116,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "merge_strategies" => { merge_strategies = Some(serde_json::from_value(v).map_err(M::Error::custom)?); @@ -138,19 +138,19 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineReduceProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let group_by = group_by.ok_or_else(|| M::Error::missing_field("group_by"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let merge_strategies = merge_strategies.ok_or_else(|| M::Error::missing_field("merge_strategies"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineReduceProcessor { + enabled, group_by, id, include, - inputs, merge_strategies, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs b/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs index 5f9c251fe..b77d58f51 100644 --- a/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_remove_fields_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineRemoveFieldsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of field names to be removed from each log event. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineRemoveFieldsProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// The `PipelineRemoveFieldsProcessor` `inputs`. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `remove_fields`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineRemoveFieldsProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineRemoveFieldsProcessor { impl ObservabilityPipelineRemoveFieldsProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineRemoveFieldsProcessorType, ) -> ObservabilityPipelineRemoveFieldsProcessor { ObservabilityPipelineRemoveFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,10 +78,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineRemoveFieldsProcessorType, > = None; @@ -93,6 +93,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -102,9 +105,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -123,17 +123,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRemoveFieldsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineRemoveFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs b/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs index abd06dc42..c1fc0c11f 100644 --- a/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_rename_fields_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineRenameFieldsProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// A list of rename rules specifying which fields to rename in the event, what to rename them to, and whether to preserve the original fields. #[serde(rename = "fields")] pub fields: Vec, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineRenameFieldsProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The processor type. The value should always be `rename_fields`. #[serde(rename = "type")] pub type_: crate::datadogV2::model::ObservabilityPipelineRenameFieldsProcessorType, @@ -35,17 +35,17 @@ pub struct ObservabilityPipelineRenameFieldsProcessor { impl ObservabilityPipelineRenameFieldsProcessor { pub fn new( + enabled: bool, fields: Vec, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineRenameFieldsProcessorType, ) -> ObservabilityPipelineRenameFieldsProcessor { ObservabilityPipelineRenameFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -78,12 +78,12 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut fields: Option< Vec, > = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineRenameFieldsProcessorType, > = None; @@ -95,6 +95,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "fields" => { fields = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -104,9 +107,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { @@ -125,17 +125,17 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRenameFieldsProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let fields = fields.ok_or_else(|| M::Error::missing_field("fields"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineRenameFieldsProcessor { + enabled, fields, id, include, - inputs, type_, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_observability_pipeline_sample_processor.rs b/src/datadogV2/model/model_observability_pipeline_sample_processor.rs index d3365d06f..b2a95ce81 100644 --- a/src/datadogV2/model/model_observability_pipeline_sample_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_sample_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSampleProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// The percentage of logs to sample. #[serde(rename = "percentage")] pub percentage: Option, @@ -38,15 +38,15 @@ pub struct ObservabilityPipelineSampleProcessor { impl ObservabilityPipelineSampleProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, type_: crate::datadogV2::model::ObservabilityPipelineSampleProcessorType, ) -> ObservabilityPipelineSampleProcessor { ObservabilityPipelineSampleProcessor { + enabled, id, include, - inputs, percentage: None, rate: None, type_, @@ -91,9 +91,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSampleProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut percentage: Option = None; let mut rate: Option = None; let mut type_: Option< @@ -107,15 +107,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSampleProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "percentage" => { if v.is_null() { continue; @@ -146,15 +146,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSampleProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSampleProcessor { + enabled, id, include, - inputs, percentage, rate, type_, diff --git a/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs b/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs index 0768cc2f3..e911f6fd1 100644 --- a/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_sensitive_data_scanner_processor.rs @@ -11,15 +11,15 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSensitiveDataScannerProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components). #[serde(rename = "id")] pub id: String, /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the `input` for this component. - #[serde(rename = "inputs")] - pub inputs: Vec, /// A list of rules for identifying and acting on sensitive data patterns. #[serde(rename = "rules")] pub rules: Vec, @@ -35,16 +35,16 @@ pub struct ObservabilityPipelineSensitiveDataScannerProcessor { impl ObservabilityPipelineSensitiveDataScannerProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, rules: Vec, type_: crate::datadogV2::model::ObservabilityPipelineSensitiveDataScannerProcessorType, ) -> ObservabilityPipelineSensitiveDataScannerProcessor { ObservabilityPipelineSensitiveDataScannerProcessor { + enabled, id, include, - inputs, rules, type_, additional_properties: std::collections::BTreeMap::new(), @@ -78,9 +78,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSensitiveDataScannerProcesso where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut rules: Option> = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineSensitiveDataScannerProcessorType, @@ -93,15 +93,15 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSensitiveDataScannerProcesso while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "rules" => { rules = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -123,16 +123,16 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSensitiveDataScannerProcesso } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let rules = rules.ok_or_else(|| M::Error::missing_field("rules"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSensitiveDataScannerProcessor { + enabled, id, include, - inputs, rules, type_, additional_properties, diff --git a/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs b/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs index f64aeba9b..d6dd66930 100644 --- a/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs +++ b/src/datadogV2/model/model_observability_pipeline_throttle_processor.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineThrottleProcessor { + /// Whether this processor is enabled. + #[serde(rename = "enabled")] + pub enabled: bool, /// Optional list of fields used to group events before the threshold has been reached. #[serde(rename = "group_by")] pub group_by: Option>, @@ -20,9 +23,6 @@ pub struct ObservabilityPipelineThrottleProcessor { /// A Datadog search query used to determine which logs this processor targets. #[serde(rename = "include")] pub include: String, - /// A list of component IDs whose output is used as the input for this processor. - #[serde(rename = "inputs")] - pub inputs: Vec, /// the number of events allowed in a given time window. Events sent after the threshold has been reached, are dropped. #[serde(rename = "threshold")] pub threshold: i64, @@ -41,18 +41,18 @@ pub struct ObservabilityPipelineThrottleProcessor { impl ObservabilityPipelineThrottleProcessor { pub fn new( + enabled: bool, id: String, include: String, - inputs: Vec, threshold: i64, type_: crate::datadogV2::model::ObservabilityPipelineThrottleProcessorType, window: f64, ) -> ObservabilityPipelineThrottleProcessor { ObservabilityPipelineThrottleProcessor { + enabled, group_by: None, id, include, - inputs, threshold, type_, window, @@ -92,10 +92,10 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { where M: MapAccess<'a>, { + let mut enabled: Option = None; let mut group_by: Option> = None; let mut id: Option = None; let mut include: Option = None; - let mut inputs: Option> = None; let mut threshold: Option = None; let mut type_: Option< crate::datadogV2::model::ObservabilityPipelineThrottleProcessorType, @@ -109,6 +109,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "enabled" => { + enabled = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "group_by" => { if v.is_null() { continue; @@ -121,9 +124,6 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { "include" => { include = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "inputs" => { - inputs = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } "threshold" => { threshold = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -148,18 +148,18 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineThrottleProcessor { } } } + let enabled = enabled.ok_or_else(|| M::Error::missing_field("enabled"))?; let id = id.ok_or_else(|| M::Error::missing_field("id"))?; let include = include.ok_or_else(|| M::Error::missing_field("include"))?; - let inputs = inputs.ok_or_else(|| M::Error::missing_field("inputs"))?; let threshold = threshold.ok_or_else(|| M::Error::missing_field("threshold"))?; let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let window = window.ok_or_else(|| M::Error::missing_field("window"))?; let content = ObservabilityPipelineThrottleProcessor { + enabled, group_by, id, include, - inputs, threshold, type_, window, diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen index 71a6a0948..b57a83dc8 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:21.625Z \ No newline at end of file +2025-12-09T17:45:09.298Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json index dff56ba61..aefdb1e5b 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-Bad-Request-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"errors\":[{\"title\":\"Component with ID filter-processor is an unknown component\",\"meta\":{\"message\":\"Component with ID filter-processor is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", + "string": "{\"errors\":[{\"title\":\"Component with ID my-processor-group is an unknown component\",\"meta\":{\"message\":\"Component with ID my-processor-group is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:21 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:09 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen index a6261e736..847119474 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:23.837Z \ No newline at end of file +2025-12-09T17:45:09.794Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json index c6b564df5..3233d45f5 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Create-a-new-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"d891e45c-21fa-11f0-96dc-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"cec462ee-d526-11f0-8326-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:23 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:09 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d891e45c-21fa-11f0-96dc-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/cec462ee-d526-11f0-8326-da7ad0900002" }, "response": { "body": { @@ -60,7 +60,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:23 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:09 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen index 033a0755d..62b94b0d8 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:25.292Z \ No newline at end of file +2025-12-09T17:45:11.332Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json index cff4dbab4..a3b16839e 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-Not-Found-response.json @@ -26,7 +26,7 @@ "message": "Not Found" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:25 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:11 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen index 9cbc728e0..9bede0bb7 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:26.847Z \ No newline at end of file +2025-12-09T17:45:11.894Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json index e719f65dc..22ece4fa0 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Delete-a-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"da5f2218-21fa-11f0-96de-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"d003a66a-d526-11f0-bd7e-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:26 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:11 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/da5f2218-21fa-11f0-96de-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d003a66a-d526-11f0-bd7e-da7ad0900002" }, "response": { "body": { @@ -60,7 +60,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:26 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:11 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/da5f2218-21fa-11f0-96de-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d003a66a-d526-11f0-bd7e-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "Not Found" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:26 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:11 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen index f863fd1ac..c2ce6fc2a 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:29.196Z \ No newline at end of file +2025-12-09T17:45:14.356Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json index 21f2f6d50..403e87371 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Get-a-specific-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"dbbff3d0-21fa-11f0-96e0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"d17ad770-d526-11f0-8328-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:29 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:14 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/dbbff3d0-21fa-11f0-96e0-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d17ad770-d526-11f0-8328-da7ad0900002" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"dbbff3d0-21fa-11f0-96e0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"d17ad770-d526-11f0-8328-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:29 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:14 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/dbbff3d0-21fa-11f0-96e0-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d17ad770-d526-11f0-8328-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:29 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:14 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen index 3a7978da8..a41ac2980 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:31.769Z \ No newline at end of file +2025-12-09T17:45:16.966Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json index 6ff26ad2d..23201f48f 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-Bad-Request-response.json @@ -26,7 +26,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:31 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:16 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen index 4c9f3cfcb..1283931f1 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:32.322Z \ No newline at end of file +2025-12-09T17:45:17.441Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json index 99db48ab6..686e84f4c 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/List-pipelines-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"dd87c652-21fa-11f0-96e2-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"d34e9dde-d526-11f0-832a-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:32 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:17 GMT" }, { "request": { @@ -47,7 +47,7 @@ }, "response": { "body": { - "string": "{\"data\":[{\"id\":\"8d85d864-0f09-11f0-9711-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"3f339054-10ab-11f0-88a2-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"b8c068de-10ab-11f0-88a8-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"32e2f90a-1139-11f0-8501-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"67e79020-1139-11f0-98d1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"30966e06-113a-11f0-98e1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"3e3f9382-138f-11f0-8cf0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"tls\":{\"crt_file\":\"/path/to/cert.crt\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"42159650-138f-11f0-a2aa-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"tls\":{\"crt_file\":\"/path/to/cert.crt\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"6cc001f8-1392-11f0-9e35-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"agent with tls\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"source-with-tls\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"source-with-tls\",\"tls\":{\"ca_file\":\"/etc/certs/ca.crt\",\"crt_file\":\"/etc/certs/agent.crt\",\"key_file\":\"/etc/certs/agent.key\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"bdf5078e-139d-11f0-8e4f-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e67402d2-139d-11f0-8e51-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e9849f22-139d-11f0-8e53-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"f9845bb0-139d-11f0-b101-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"2ebd82ca-139e-11f0-b103-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"31ba5a34-139e-11f0-8e55-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"3aa802c2-139e-11f0-8e57-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"7b3daaf8-139e-11f0-8e59-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"7e72d32e-139e-11f0-8e5b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"818a8728-139e-11f0-8e5d-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"bed86e88-139e-11f0-8e5f-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c202b050-139e-11f0-b107-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c5111084-139e-11f0-8e61-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e01ae6de-139e-11f0-8e63-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e33ad356-139e-11f0-b109-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e6783e78-139e-11f0-b10b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"04407bfa-139f-11f0-8e65-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"126be958-139f-11f0-8e67-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"97607354-139f-11f0-8e6b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"305f9a88-13a2-11f0-8dd9-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"parse-json-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"env:parse\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"45669120-13a2-11f0-8ddb-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"parse-json-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"env:parse\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c00f7548-13a4-11f0-9315-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"c07cf206-13a6-11f0-949d-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff06e36-13ad-11f0-8243-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff1a508-13ad-11f0-b934-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"agent with tls\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"source-with-tls\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"source-with-tls\",\"tls\":{\"crt_file\":\"/etc/certs/agent.crt\",\"key_file\":\"/etc/certs/agent.key\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff38a08-13ad-11f0-8245-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"parse-json-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"env:parse\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"8ff54f0a-13ad-11f0-8247-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"kafka pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"kafka-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"group_id\":\"consumer-group-1\",\"id\":\"kafka-source-1\",\"sasl\":{\"mechanism\":\"PLAIN\"},\"tls\":{\"ca_file\":\"\",\"crt_file\":\"/path/to/kafka.crt\"},\"topics\":[\"topic-a\",\"topic-b\"],\"type\":\"kafka\"}]}}},{\"id\":\"f814235e-13ad-11f0-b942-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"agent with tls\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"source-with-tls\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"source-with-tls\",\"tls\":{\"crt_file\":\"/etc/certs/agent.crt\",\"key_file\":\"/etc/certs/agent.key\"},\"type\":\"datadog_agent\"}]}}},{\"id\":\"5b1a9314-13ce-11f0-a9de-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"rename-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"rename-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"destination\":\"new.field\",\"preserve_source\":true,\"source\":\"old.field\"}],\"id\":\"rename-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"rename_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"1e356802-1419-11f0-8834-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"14156a86-142b-11f0-96f3-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"a5280a06-143a-11f0-aac4-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"5005f6c2-1481-11f0-8faa-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"remove-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"remove-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[\"temp.debug\",\"internal.trace_id\"],\"id\":\"remove-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"remove_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"9c1776c0-14d7-11f0-87c9-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"b1e4c58c-1501-11f0-b0bd-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"43a8a4cc-15c3-11f0-b111-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"45042a58-15c3-11f0-b113-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"f9de3956-15cc-11f0-ac43-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"b3efaa52-1693-11f0-89e0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"24c83620-1696-11f0-89e6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"5d2875d6-17a2-11f0-9bd1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}],\"meta\":{\"totalCount\":128}}\n", + "string": "{\"data\":[{\"id\":\"79e292e4-7eed-11f0-ae9a-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"95f5859a-7eed-11f0-b11e-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"remove-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"remove-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[\"temp.debug\",\"internal.trace_id\"],\"id\":\"remove-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"remove_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"befe717c-7eed-11f0-b142-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"sentinel-pipeline\",\"config\":{\"destinations\":[{\"client_id\":\"a1b2c3d4-5678-90ab-cdef-1234567890ab\",\"dcr_immutable_id\":\"dcr-uuid-1234\",\"id\":\"sentinel-dest-1\",\"inputs\":[\"source-1\"],\"table\":\"CustomLogsTable\",\"tenant_id\":\"abcdef12-3456-7890-abcd-ef1234567890\",\"type\":\"microsoft_sentinel\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"cde707bc-7eed-11f0-b14e-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"reduce pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"reduce-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"group_by\":[\"log.user.id\",\"log.device.id\"],\"id\":\"reduce-1\",\"include\":\"env:prod\",\"inputs\":[\"source-1\"],\"merge_strategies\":[{\"path\":\"log.user.roles\",\"strategy\":\"flat_unique\"},{\"path\":\"log.error.messages\",\"strategy\":\"concat\"},{\"path\":\"log.count\",\"strategy\":\"sum\"},{\"path\":\"log.status\",\"strategy\":\"retain\"}],\"type\":\"reduce\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"d48b3778-7eed-11f0-b156-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"chronicle pipeline\",\"config\":{\"destinations\":[{\"auth\":{\"credentials_file\":\"/secrets/gcp.json\"},\"customer_id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"encoding\":\"json\",\"id\":\"chronicle-dest-1\",\"inputs\":[\"source-1\"],\"log_type\":\"nginx_logs\",\"type\":\"google_chronicle\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"a7b4ba96-7f09-11f0-b21f-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"02f9b5d4-7f17-11f0-b042-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"92b580a6-7f4c-11f0-b432-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"1dbda0ee-7f51-11f0-9018-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"firehose pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"firehose-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"auth\":{\"assume_role\":\"arn:aws:iam::123456789012:role/ExampleRole\",\"external_id\":\"external-id-123\",\"session_name\":\"firehose-session\"},\"id\":\"firehose-source-1\",\"tls\":{\"crt_file\":\"/path/to/firehose.crt\"},\"type\":\"amazon_data_firehose\"}]}}},{\"id\":\"23e99d42-7f51-11f0-901c-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"dedupe pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"dedupe-ignore\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[\"log.message\",\"log.tags\"],\"id\":\"dedupe-match\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"mode\":\"match\",\"type\":\"dedupe\"},{\"fields\":[\"log.source\",\"log.context\"],\"id\":\"dedupe-ignore\",\"include\":\"*\",\"inputs\":[\"dedupe-match\"],\"mode\":\"ignore\",\"type\":\"dedupe\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"2686dd3a-7f51-11f0-844e-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"throttle pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"throttle-grouped\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"throttle-global\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"threshold\":1000,\"type\":\"throttle\",\"window\":60},{\"group_by\":[\"log.user.id\",\"log.level\"],\"id\":\"throttle-grouped\",\"include\":\"*\",\"inputs\":[\"throttle-global\"],\"threshold\":100,\"type\":\"throttle\",\"window\":10}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"342f7956-7f51-11f0-9026-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"amazon opensearch pipeline\",\"config\":{\"destinations\":[{\"auth\":{\"assume_role\":\"arn:aws:iam::123456789012:role/example-role\",\"aws_region\":\"us-east-1\",\"external_id\":\"external-id-123\",\"session_name\":\"aos-session\",\"strategy\":\"aws\"},\"bulk_index\":\"logs-datastream\",\"id\":\"aos-dest-1\",\"inputs\":[\"source-1\"],\"type\":\"amazon_opensearch\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"43159012-7f52-11f0-916f-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"test pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"parser-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"field\":\"message\",\"id\":\"parser-1\",\"include\":\"service:my-service\",\"inputs\":[\"source-1\"],\"type\":\"parse_json\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"d8b76f78-7fb6-11f0-9f78-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"sds-full-test\",\"config\":{\"destinations\":[{\"id\":\"sink\",\"inputs\":[\"sds-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"sds-1\",\"include\":\"*\",\"inputs\":[\"source-a\"],\"rules\":[{\"keyword_options\":{\"keywords\":[\"secret\",\"token\"],\"proximity\":4},\"name\":\"Redact with Exclude\",\"on_match\":{\"action\":\"redact\",\"options\":{\"replace\":\"[REDACTED]\"}},\"pattern\":{\"options\":{\"rule\":\"\\\\bsecret-[a-z0-9]+\\\\b\"},\"type\":\"custom\"},\"scope\":{\"options\":{\"fields\":[\"not_this_field\"]},\"target\":\"exclude\"},\"tags\":[\"confidential\",\"mask\"]},{\"name\":\"Library Hash\",\"on_match\":{\"action\":\"hash\"},\"pattern\":{\"options\":{\"id\":\"ip_address\",\"use_recommended_keywords\":true},\"type\":\"library\"},\"scope\":{\"target\":\"all\"},\"tags\":[\"pii\"]},{\"name\":\"Partial Default Scope\",\"on_match\":{\"action\":\"partial_redact\",\"options\":{\"characters\":3,\"direction\":\"first\"}},\"pattern\":{\"options\":{\"rule\":\"user\\\\d{3,}\"},\"type\":\"custom\"},\"scope\":{\"options\":{\"fields\":[\"this_field_only\"]},\"target\":\"include\"},\"tags\":[\"user\",\"pii\"]}],\"type\":\"sensitive_data_scanner\"}],\"sources\":[{\"id\":\"source-a\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e2b4e2ee-7fb6-11f0-9f7e-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"dedupe pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"dedupe-ignore\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[\"log.message\",\"log.tags\"],\"id\":\"dedupe-match\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"mode\":\"match\",\"type\":\"dedupe\"},{\"fields\":[\"log.source\",\"log.context\"],\"id\":\"dedupe-ignore\",\"include\":\"*\",\"inputs\":[\"dedupe-match\"],\"mode\":\"ignore\",\"type\":\"dedupe\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"034843c0-7fb7-11f0-9eb6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"remap-vrl-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"remap-processor-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"remap-processor-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"remaps\":[{\"drop_on_error\":false,\"enabled\":true,\"include\":\"service:web\",\"name\":\"Parse JSON from message\",\"source\":\". = parse_json!(string!(.message))\"},{\"drop_on_error\":true,\"enabled\":true,\"include\":\"env:prod\",\"name\":\"Add timestamp\",\"source\":\".timestamp = now()\"}],\"type\":\"custom_processor\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"3ccd875c-7fd2-11f0-b6d7-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"6b30d2f0-7fd9-11f0-af48-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"fcf10236-7fdf-11f0-8692-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"a58467e6-8015-11f0-9924-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"bb15a8a4-8015-11f0-a7c1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"05889c3a-801a-11f0-a7d5-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"sample-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"sample-2\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"sample-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"rate\":10,\"type\":\"sample\"},{\"id\":\"sample-2\",\"include\":\"*\",\"inputs\":[\"sample-1\"],\"percentage\":4.99,\"type\":\"sample\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"0a28d246-801a-11f0-8394-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"http-server-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"http-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"auth_strategy\":\"plain\",\"decoding\":\"json\",\"id\":\"http-source-1\",\"tls\":{\"ca_file\":\"/etc/ssl/certs/ca.crt\",\"crt_file\":\"/etc/ssl/certs/http.crt\",\"key_file\":\"/etc/ssl/private/http.key\"},\"type\":\"http_server\"}]}}},{\"id\":\"2eb40eaa-801a-11f0-83a6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"logstash pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"logstash-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"logstash-source-1\",\"tls\":{\"crt_file\":\"/path/to/logstash.crt\"},\"type\":\"logstash\"}]}}},{\"id\":\"4c6ad8b6-801a-11f0-83b4-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"socket-pipeline-udp\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"socket-source-2\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"framing\":{\"delimiter\":\"|\",\"method\":\"character_delimited\"},\"id\":\"socket-source-2\",\"mode\":\"udp\",\"type\":\"socket\"}]}}},{\"id\":\"4f07b526-801a-11f0-83b6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"socket-destination-pipeline\",\"config\":{\"destinations\":[{\"encoding\":\"json\",\"framing\":{\"method\":\"newline_delimited\"},\"id\":\"socket-dest-1\",\"inputs\":[\"source-1\"],\"mode\":\"tcp\",\"tls\":{\"ca_file\":\"/etc/ssl/certs/ca.crt\",\"crt_file\":\"/etc/ssl/certs/socket.crt\",\"key_file\":\"/etc/ssl/private/socket.key\"},\"type\":\"socket\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"cc14120c-807f-11f0-b4a4-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"42a10830-8080-11f0-b4b6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"http-server-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"http-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"auth_strategy\":\"plain\",\"decoding\":\"json\",\"id\":\"http-source-1\",\"tls\":{\"ca_file\":\"/etc/ssl/certs/ca.crt\",\"crt_file\":\"/etc/ssl/certs/http.crt\",\"key_file\":\"/etc/ssl/private/http.key\"},\"type\":\"http_server\"}]}}},{\"id\":\"455121dc-8080-11f0-b4b8-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"splunk-hec-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"splunk-hec-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"splunk-hec-source-1\",\"tls\":{\"ca_file\":\"/etc/ssl/certs/ca.crt\",\"crt_file\":\"/etc/ssl/certs/splunk.crt\",\"key_file\":\"/etc/ssl/private/splunk.key\"},\"type\":\"splunk_hec\"}]}}},{\"id\":\"49d9a396-8080-11f0-98a3-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"gcs-destination-pipeline\",\"config\":{\"destinations\":[{\"acl\":\"project-private\",\"auth\":{\"credentials_file\":\"/var/secrets/gcp-creds.json\"},\"bucket\":\"my-gcs-bucket\",\"id\":\"gcs-destination-1\",\"inputs\":[\"source-1\"],\"key_prefix\":\"logs/\",\"metadata\":[{\"name\":\"environment\",\"value\":\"production\"},{\"name\":\"team\",\"value\":\"platform\"}],\"storage_class\":\"NEARLINE\",\"type\":\"google_cloud_storage\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"4a9d5098-8080-11f0-b4bc-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"splunk-hec-destination-pipeline\",\"config\":{\"destinations\":[{\"auto_extract_timestamp\":true,\"encoding\":\"json\",\"id\":\"splunk-hec-1\",\"index\":\"main\",\"inputs\":[\"source-1\"],\"sourcetype\":\"custom_sourcetype\",\"type\":\"splunk_hec\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"4b5b9238-8080-11f0-98a5-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"sumo pipeline\",\"config\":{\"destinations\":[{\"encoding\":\"json\",\"header_custom_fields\":[{\"name\":\"X-Sumo-Category\",\"value\":\"my-app-logs\"},{\"name\":\"X-Custom-Header\",\"value\":\"debug=true\"}],\"header_host_name\":\"host-123\",\"header_source_category\":\"source-category\",\"header_source_name\":\"source-name\",\"id\":\"sumo-dest-1\",\"inputs\":[\"source-1\"],\"type\":\"sumo_logic\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"4fd012a8-8080-11f0-98a9-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"rsyslog-dest-pipeline\",\"config\":{\"destinations\":[{\"id\":\"rsyslog-destination-1\",\"inputs\":[\"source-1\"],\"keepalive\":60000,\"tls\":{\"crt_file\":\"/etc/certs/rsyslog.crt\"},\"type\":\"rsyslog\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"6d48f746-8080-11f0-98b7-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"chronicle pipeline\",\"config\":{\"destinations\":[{\"auth\":{\"credentials_file\":\"/secrets/gcp.json\"},\"customer_id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"encoding\":\"json\",\"id\":\"chronicle-dest-1\",\"inputs\":[\"source-1\"],\"log_type\":\"nginx_logs\",\"type\":\"google_chronicle\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"73a20eca-8080-11f0-98b9-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"opensearch pipeline\",\"config\":{\"destinations\":[{\"bulk_index\":\"logs-datastream\",\"id\":\"opensearch-dest-1\",\"inputs\":[\"source-1\"],\"type\":\"opensearch\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"5e6dae8c-80bd-11f0-a213-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"5f6fbb72-80bd-11f0-a215-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"e7857b20-80de-11f0-a262-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"579ccd4c-80e3-11f0-a296-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"syslogng-source-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"syslogng-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"syslogng-source-1\",\"mode\":\"udp\",\"tls\":{\"crt_file\":\"/etc/certs/syslogng.crt\"},\"type\":\"syslog_ng\"}]}}},{\"id\":\"58505402-80e3-11f0-a298-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"rsyslog-dest-pipeline\",\"config\":{\"destinations\":[{\"id\":\"rsyslog-destination-1\",\"inputs\":[\"source-1\"],\"keepalive\":60000,\"tls\":{\"crt_file\":\"/etc/certs/rsyslog.crt\"},\"type\":\"rsyslog\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"64a3e372-80e3-11f0-a2a6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"firehose pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"firehose-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"auth\":{\"assume_role\":\"arn:aws:iam::123456789012:role/ExampleRole\",\"external_id\":\"external-id-123\",\"session_name\":\"firehose-session\"},\"id\":\"firehose-source-1\",\"tls\":{\"crt_file\":\"/path/to/firehose.crt\"},\"type\":\"amazon_data_firehose\"}]}}},{\"id\":\"92751474-80e3-11f0-a2d0-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"amazon s3 pipeline (minimal)\",\"config\":{\"destinations\":[{\"bucket\":\"my-logs-bucket\",\"id\":\"s3-dest-basic-1\",\"inputs\":[\"source-1\"],\"key_prefix\":\"logs/\",\"region\":\"us-east-1\",\"storage_class\":\"STANDARD\",\"type\":\"amazon_s3\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"2ae24eb0-8149-11f0-baea-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"quota-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"quota-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"drop_events\":true,\"id\":\"quota-1\",\"ignore_when_missing_partitions\":true,\"include\":\"*\",\"inputs\":[\"source-1\"],\"limit\":{\"enforce\":\"events\",\"limit\":1000},\"name\":\"limitByHostAndEnv\",\"overrides\":[{\"fields\":[{\"name\":\"env\",\"value\":\"prod\"},{\"name\":\"host\",\"value\":\"*\"}],\"limit\":{\"enforce\":\"events\",\"limit\":500}},{\"fields\":[{\"name\":\"env\",\"value\":\"*\"},{\"name\":\"host\",\"value\":\"localhost\"}],\"limit\":{\"enforce\":\"bytes\",\"limit\":300}}],\"partition_fields\":[\"host\",\"env\"],\"type\":\"quota\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"2d5cca94-8149-11f0-baec-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"},{\"name\":\"env\",\"value\":\"prod\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"type\":\"add_fields\"}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"31a26406-8149-11f0-9918-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"fluent-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"fluent-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"id\":\"fluent-source-1\",\"tls\":{\"ca_file\":\"/etc/ssl/certs/ca.crt\",\"crt_file\":\"/etc/ssl/certs/fluent.crt\",\"key_file\":\"/etc/ssl/private/fluent.key\"},\"type\":\"fluentd\"}]}}},{\"id\":\"47a53594-8149-11f0-9926-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"syslogng-dest-pipeline\",\"config\":{\"destinations\":[{\"id\":\"syslogng-destination-1\",\"inputs\":[\"source-1\"],\"keepalive\":45000,\"tls\":{\"crt_file\":\"/etc/certs/syslogng.crt\"},\"type\":\"syslog_ng\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"65424c18-8149-11f0-bb0a-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"sentinelone pipeline\",\"config\":{\"destinations\":[{\"id\":\"sentinelone-dest-1\",\"inputs\":[\"source-1\"],\"region\":\"us\",\"type\":\"sentinel_one\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"72abaaca-8149-11f0-9940-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"socket-pipeline-udp\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"socket-source-2\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"framing\":{\"delimiter\":\"|\",\"method\":\"character_delimited\"},\"id\":\"socket-source-2\",\"mode\":\"udp\",\"type\":\"socket\"}]}}},{\"id\":\"4b51d94c-8165-11f0-ab16-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"d9ab0514-81a7-11f0-b0f7-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}],\"meta\":{\"totalCount\":482}}\n", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:32 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:17 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/dd87c652-21fa-11f0-96e2-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d34e9dde-d526-11f0-832a-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:32 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:17 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen index a8aa863f1..50214c0f1 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:34.672Z \ No newline at end of file +2025-12-09T17:45:20.417Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json index 3f1394aec..7fb4e0246 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Bad-Request-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"deeea5f6-21fa-11f0-96e4-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"d5165134-d526-11f0-bd80-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:34 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:20 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"unknown-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "put", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/deeea5f6-21fa-11f0-96e4-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d5165134-d526-11f0-bd80-da7ad0900002" }, "response": { "body": { - "string": "{\"errors\":[{\"title\":\"Component with ID filter-processor is an unknown component\",\"meta\":{\"message\":\"Component with ID filter-processor is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", + "string": "{\"errors\":[{\"title\":\"Component with ID my-processor-group is an unknown component\",\"meta\":{\"message\":\"Component with ID my-processor-group is an unknown component\"}},{\"title\":\"The following components are unused: [datadog-agent-source unknown-processor]\",\"meta\":{\"message\":\"The following components are unused: [datadog-agent-source unknown-processor]\"}}]}\n", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:34 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:20 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/deeea5f6-21fa-11f0-96e4-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d5165134-d526-11f0-bd80-da7ad0900002" }, "response": { "body": { @@ -94,7 +94,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:34 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:20 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen index 81821e325..a674afcc3 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:36.564Z \ No newline at end of file +2025-12-09T17:45:23.208Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json index d6402b9f0..757d0c0b3 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-Not-Found-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Not Found" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:23 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen index 8195f92c7..24d196b2e 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:36.987Z \ No newline at end of file +2025-12-09T17:45:23.721Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json index 4e01dc6ce..8aa804ac6 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Update-a-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"e04d5230-21fa-11f0-96e6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"d70e591e-d526-11f0-bd82-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:23 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Updated Pipeline Name\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Updated Pipeline Name\"},\"id\":\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "put", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/e04d5230-21fa-11f0-96e6-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d70e591e-d526-11f0-bd82-da7ad0900002" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"e04d5230-21fa-11f0-96e6-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Updated Pipeline Name\",\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"d70e591e-d526-11f0-bd82-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Updated Pipeline Name\",\"config\":{\"destinations\":[{\"id\":\"updated-datadog-logs-destination-id\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:23 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/e04d5230-21fa-11f0-96e6-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/d70e591e-d526-11f0-bd82-da7ad0900002" }, "response": { "body": { @@ -94,7 +94,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:36 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:23 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen index f19e635b2..c68371428 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:39.236Z \ No newline at end of file +2025-12-09T17:45:26.569Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json index ac40712d6..2979ecbd4 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-Bad-Request-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"errors\":[{\"title\":\"Field 'include' is required\",\"meta\":{\"field\":\"include\",\"id\":\"filter-processor\",\"message\":\"Field 'include' is required\"}}]}\n", + "string": "{\"errors\":[{\"title\":\"Field 'include' is required\",\"meta\":{\"field\":\"include\",\"id\":\"my-processor-group\",\"message\":\"Field 'include' is required\"}},{\"title\":\"Field 'include' is required\",\"meta\":{\"field\":\"include\",\"id\":\"filter-processor\",\"message\":\"Field 'include' is required\"}}]}\n", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Bad Request" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:39 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:26 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen index c2e1e3c73..fd55ff741 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.frozen @@ -1 +1 @@ -2025-04-25T17:29:39.613Z \ No newline at end of file +2025-12-09T17:45:27.053Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json index 327ad4a1a..75ee5f161 100644 --- a/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/observability_pipelines/Validate-an-observability-pipeline-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"filter-processor\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"id\":\"filter-processor\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"type\":\"filter\"}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", + "string": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Main Observability Pipeline\"},\"type\":\"pipelines\"}}", "encoding": null }, "headers": { @@ -24,7 +24,7 @@ }, "headers": { "Content-Type": [ - "application/json" + "application/vnd.api+json" ] }, "status": { @@ -32,7 +32,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 25 Apr 2025 17:29:39 GMT" + "recorded_at": "Tue, 09 Dec 2025 17:45:27 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/features/v2/given.json b/tests/scenarios/features/v2/given.json index ad563ffc7..76361d7f8 100644 --- a/tests/scenarios/features/v2/given.json +++ b/tests/scenarios/features/v2/given.json @@ -867,7 +867,7 @@ "parameters": [ { "name": "body", - "value": "{\n \"data\":{\n \"attributes\":{\n \"config\":{\n \"destinations\":[\n {\n \"id\":\"datadog-logs-destination\",\n \"inputs\":[\n \"filter-processor\"\n ],\n \"type\":\"datadog_logs\"\n }\n ],\n \"processors\":[\n {\n \"id\":\"filter-processor\",\n \"include\":\"service:my-service\",\n \"inputs\":[\n \"datadog-agent-source\"\n ],\n \"type\":\"filter\"\n }\n ],\n \"sources\":[\n {\n \"id\":\"datadog-agent-source\",\n \"type\":\"datadog_agent\"\n }\n ]\n },\n \"name\":\"Main Observability Pipeline\"\n },\n \"type\":\"pipelines\"\n }\n}" + "value": "{\n \"data\":{\n \"attributes\":{\n \"config\":{\n \"destinations\":[\n {\n \"id\":\"datadog-logs-destination\",\n \"inputs\":[\n \"processor-group-0\"\n ],\n \"type\":\"datadog_logs\"\n }\n ],\n \"processors\":[\n {\n \"id\":\"processor-group-0\",\n \"include\":\"service:my-service\",\n \"inputs\":[\n \"datadog-agent-source\"\n ],\n \"enabled\": true,\n \"processors\": [\n {\n \"id\": \"filter-processor\",\n \"type\": \"filter\",\n \"include\": \"status:error\",\n \"enabled\": true\n }\n ]\n }\n ],\n \"sources\":[\n {\n \"id\":\"datadog-agent-source\",\n \"type\":\"datadog_agent\"\n }\n ]\n },\n \"name\":\"Main Observability Pipeline\"\n },\n \"type\":\"pipelines\"\n }\n}" } ], "step": "there is a valid \"pipeline\" in the system", diff --git a/tests/scenarios/features/v2/observability_pipelines.feature b/tests/scenarios/features/v2/observability_pipelines.feature index c7149b1e4..7d9b51e30 100644 --- a/tests/scenarios/features/v2/observability_pipelines.feature +++ b/tests/scenarios/features/v2/observability_pipelines.feature @@ -12,7 +12,7 @@ Feature: Observability Pipelines Scenario: Create a new pipeline returns "Bad Request" response Given operation "CreatePipeline" enabled And new "CreatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 400 Bad Request @@ -20,7 +20,7 @@ Feature: Observability Pipelines Scenario: Create a new pipeline returns "Conflict" response Given operation "CreatePipeline" enabled And new "CreatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}, {"enabled": true, "field": "message", "id": "json-processor", "include": "*", "type": "parse_json"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 409 Conflict @@ -28,7 +28,7 @@ Feature: Observability Pipelines Scenario: Create a new pipeline returns "OK" response Given operation "CreatePipeline" enabled And new "CreatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 201 OK And the response "data" has field "id" @@ -106,7 +106,7 @@ Feature: Observability Pipelines And new "UpdatePipeline" request And there is a valid "pipeline" in the system And request contains "pipeline_id" parameter from "pipeline.data.id" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "unknown-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 400 Bad Request @@ -115,7 +115,7 @@ Feature: Observability Pipelines Given operation "UpdatePipeline" enabled And new "UpdatePipeline" request And request contains "pipeline_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}, {"enabled": true, "field": "message", "id": "json-processor", "include": "*", "type": "parse_json"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 409 Conflict @@ -124,7 +124,7 @@ Feature: Observability Pipelines Given operation "UpdatePipeline" enabled And new "UpdatePipeline" request And request contains "pipeline_id" parameter with value "3fa85f64-5717-4562-b3fc-2c963f66afa6" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 404 Not Found @@ -134,7 +134,7 @@ Feature: Observability Pipelines And there is a valid "pipeline" in the system And new "UpdatePipeline" request And request contains "pipeline_id" parameter from "pipeline.data.id" - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "updated-datadog-logs-destination-id", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Updated Pipeline Name"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "updated-datadog-logs-destination-id", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Updated Pipeline Name"}, "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "type": "pipelines"}} When the request is sent Then the response status is 200 OK And the response "data" has field "id" @@ -149,19 +149,19 @@ Feature: Observability Pipelines Scenario: Validate an observability pipeline returns "Bad Request" response Given operation "ValidatePipeline" enabled And new "ValidatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 400 Bad Request And the response "errors[0].title" is equal to "Field 'include' is required" And the response "errors[0].meta.field" is equal to "include" - And the response "errors[0].meta.id" is equal to "filter-processor" + And the response "errors[0].meta.id" is equal to "my-processor-group" And the response "errors[0].meta.message" is equal to "Field 'include' is required" @team:DataDog/observability-pipelines Scenario: Validate an observability pipeline returns "OK" response Given operation "ValidatePipeline" enabled And new "ValidatePipeline" request - And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["filter-processor"], "type": "datadog_logs"}], "processors": [{"id": "filter-processor", "include": "service:my-service", "inputs": ["datadog-agent-source"], "type": "filter"}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processors": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "filter-processor", "include": "status:error", "type": "filter"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Main Observability Pipeline"}, "type": "pipelines"}} When the request is sent Then the response status is 200 OK And the response "errors" has length 0