diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index d2192b748..00712cecc 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -6684,6 +6684,8 @@ components: description: Optional prefix for blobs written to the container. example: logs/ type: string + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' container_name: description: The name of the Azure Blob Storage container to store logs in. @@ -15878,6 +15880,78 @@ components: type: string nullable: true type: array + DORADeploymentFetchResponse: + description: Response for fetching a single deployment event. + properties: + data: + $ref: '#/components/schemas/DORADeploymentObject' + type: object + DORADeploymentObject: + description: A DORA deployment event. + example: + attributes: + custom_tags: + - language:java + - department:engineering + - region:us-east-1 + env: production + finished_at: 1693491984000000000 + git: + commit_sha: 66adc9350f2cc9b250b69abddab733dd55e1a588 + repository_url: https://github.com/organization/example-repository + service: shopist + started_at: 1693491974000000000 + team: backend + version: v1.12.07 + id: 4242fcdd31586083 + type: dora_deployment + properties: + attributes: + $ref: '#/components/schemas/DORADeploymentObjectAttributes' + id: + description: The ID of the deployment event. + type: string + type: + $ref: '#/components/schemas/DORADeploymentType' + type: object + DORADeploymentObjectAttributes: + description: The attributes of the deployment event. + properties: + custom_tags: + $ref: '#/components/schemas/DORACustomTags' + env: + description: Environment name to where the service was deployed. + example: production + type: string + finished_at: + description: Unix timestamp when the deployment finished. + example: 1693491984000000000 + format: int64 + type: integer + git: + $ref: '#/components/schemas/DORAGitInfo' + service: + description: Service name. + example: shopist + type: string + started_at: + description: Unix timestamp when the deployment started. + example: 1693491974000000000 + format: int64 + type: integer + team: + description: Name of the team owning the deployed service. + example: backend + type: string + version: + description: Version to correlate with APM Deployment Tracking. + example: v1.12.07 + type: string + required: + - service + - started_at + - finished_at + type: object DORADeploymentRequest: description: Request to create a DORA deployment event. properties: @@ -15968,18 +16042,53 @@ components: type: string x-enum-varnames: - DORA_DEPLOYMENT - DORAEvent: - description: A DORA event. + DORADeploymentsListResponse: + description: Response for the list deployments endpoint. + example: + data: + - attributes: + custom_tags: + - language:java + - department:engineering + - region:us-east-1 + env: production + finished_at: 1693491984000000000 + git: + commit_sha: 66adc9350f2cc9b250b69abddab733dd55e1a588 + repository_url: https://github.com/organization/example-repository + service: shopist + started_at: 1693491974000000000 + team: backend + version: v1.12.07 + id: 4242fcdd31586083 + type: dora_deployment + - attributes: + custom_tags: + - language:go + - department:platform + env: production + finished_at: 1693492084000000000 + git: + commit_sha: 77bdc9350f2cc9b250b69abddab733dd55e1a599 + repository_url: https://github.com/organization/api-service + service: api-service + started_at: 1693492074000000000 + team: backend + version: v2.1.0 + id: 4242fcdd31586084 + type: dora_deployment properties: - attributes: - description: The attributes of the event. - type: object - id: - description: The ID of the event. - type: string - type: - description: The type of the event. - type: string + data: + description: The list of DORA deployment events. + items: + $ref: '#/components/schemas/DORADeploymentObject' + type: array + type: object + DORAFailureFetchResponse: + description: Response for fetching a single failure event. + properties: + data: + $ref: '#/components/schemas/DORAIncidentObject' type: object DORAFailureRequest: description: Request to create a DORA failure event. @@ -16083,11 +16192,45 @@ components: type: string x-enum-varnames: - DORA_FAILURE - DORAFetchResponse: - description: Response for the DORA fetch endpoints. + DORAFailuresListResponse: + description: Response for the list failures endpoint. + example: + data: + - attributes: + custom_tags: + - incident_type:database + - department:engineering + env: production + finished_at: 1693492274000000000 + name: Database outage + services: + - shopist + severity: SEV-1 + started_at: 1693492174000000000 + team: backend + id: 4242fcdd31586085 + type: dora_incident + - attributes: + custom_tags: + - incident_type:service_down + - department:platform + env: production + finished_at: 1693492474000000000 + name: API service outage + services: + - api-service + - payment-service + severity: SEV-2 + started_at: 1693492374000000000 + team: backend + id: 4242fcdd31586086 + type: dora_incident properties: data: - $ref: '#/components/schemas/DORAEvent' + description: The list of DORA incident events. + items: + $ref: '#/components/schemas/DORAIncidentObject' + type: array type: object DORAGitInfo: description: Git info for DORA Metrics events. @@ -16100,6 +16243,82 @@ components: - repository_url - commit_sha type: object + DORAIncidentObject: + description: A DORA incident event. + example: + attributes: + custom_tags: + - incident_type:database + - department:engineering + env: production + finished_at: 1693492274000000000 + git: + commit_sha: 66adc9350f2cc9b250b69abddab733dd55e1a588 + repository_url: https://github.com/organization/example-repository + name: Database outage + services: + - shopist + severity: SEV-1 + started_at: 1693492174000000000 + team: backend + id: 4242fcdd31586085 + type: dora_incident + properties: + attributes: + $ref: '#/components/schemas/DORAIncidentObjectAttributes' + id: + description: The ID of the incident event. + type: string + type: + $ref: '#/components/schemas/DORAFailureType' + type: object + DORAIncidentObjectAttributes: + description: The attributes of the incident event. + properties: + custom_tags: + $ref: '#/components/schemas/DORACustomTags' + env: + description: Environment name that was impacted by the incident. + example: production + type: string + finished_at: + description: Unix timestamp when the incident finished. + example: 1693491984000000000 + format: int64 + type: integer + git: + $ref: '#/components/schemas/DORAGitInfo' + name: + description: Incident name. + example: Database outage + type: string + services: + description: Service names impacted by the incident. + example: + - shopist + items: + type: string + type: array + severity: + description: Incident severity. + example: SEV-1 + type: string + started_at: + description: Unix timestamp when the incident started. + example: 1693491974000000000 + format: int64 + type: integer + team: + description: Name of the team owning the services impacted. + example: backend + type: string + version: + description: Version to correlate with APM Deployment Tracking. + example: v1.12.07 + type: string + required: + - started_at + type: object DORAListDeploymentsRequest: description: Request to get a list of deployments. example: @@ -16119,32 +16338,31 @@ components: type: object DORAListDeploymentsRequestAttributes: description: Attributes to get a list of deployments. - example: - from: '2025-01-01T00:00:00Z' - limit: 500 - query: service:(shopist OR api-service OR payment-service) env:(production - OR staging) team:(backend OR platform) - sort: -started_at - to: '2025-01-31T23:59:59Z' properties: from: description: Minimum timestamp for requested events. + example: '2025-01-01T00:00:00Z' format: date-time type: string limit: default: 10 description: Maximum number of events in the response. + example: 500 format: int32 maximum: 1000 type: integer query: description: Search query with event platform syntax. + example: service:(shopist OR api-service OR payment-service) env:(production + OR staging) team:(backend OR platform) type: string sort: description: Sort order (prefixed with `-` for descending). + example: -started_at type: string to: description: Maximum timestamp for requested events. + example: '2025-01-31T23:59:59Z' format: date-time type: string type: object @@ -16167,9 +16385,11 @@ components: - attributes type: object DORAListDeploymentsRequestDataType: + default: dora_deployments_list_request description: The definition of `DORAListDeploymentsRequestDataType` object. enum: - dora_deployments_list_request + example: dora_deployments_list_request type: string x-enum-varnames: - DORA_DEPLOYMENTS_LIST_REQUEST @@ -16192,32 +16412,31 @@ components: type: object DORAListFailuresRequestAttributes: description: Attributes to get a list of failures. - example: - from: '2025-01-01T00:00:00Z' - limit: 500 - query: severity:(SEV-1 OR SEV-2) env:(production OR staging) service:(shopist - OR api-service OR payment-service) team:(backend OR platform OR payments) - sort: -started_at - to: '2025-01-31T23:59:59Z' properties: from: description: Minimum timestamp for requested events. + example: '2025-01-01T00:00:00Z' format: date-time type: string limit: default: 10 description: Maximum number of events in the response. + example: 500 format: int32 maximum: 1000 type: integer query: description: Search query with event platform syntax. + example: severity:(SEV-1 OR SEV-2) env:(production OR staging) service:(shopist + OR api-service OR payment-service) team:(backend OR platform OR payments) type: string sort: description: Sort order (prefixed with `-` for descending). + example: -started_at type: string to: description: Maximum timestamp for requested events. + example: '2025-01-31T23:59:59Z' format: date-time type: string type: object @@ -16240,54 +16459,14 @@ components: - attributes type: object DORAListFailuresRequestDataType: + default: dora_failures_list_request description: The definition of `DORAListFailuresRequestDataType` object. enum: - dora_failures_list_request + example: dora_failures_list_request type: string x-enum-varnames: - DORA_FAILURES_LIST_REQUEST - DORAListResponse: - description: Response for the DORA list endpoints. - example: - data: - - attributes: - custom_tags: - - language:java - - department:engineering - - region:us-east-1 - env: production - finished_at: 1693491984000000000 - git: - commit_sha: 66adc9350f2cc9b250b69abddab733dd55e1a588 - repository_url: https://github.com/organization/example-repository - service: shopist - started_at: 1693491974000000000 - team: backend - version: v1.12.07 - id: 4242fcdd31586083 - type: dora_deployment - - attributes: - custom_tags: - - language:go - - department:platform - env: production - finished_at: 1693492084000000000 - git: - commit_sha: 77bdc9350f2cc9b250b69abddab733dd55e1a599 - repository_url: https://github.com/organization/api-service - service: api-service - started_at: 1693492074000000000 - team: backend - version: v2.1.0 - id: 4242fcdd31586084 - type: dora_deployment - properties: - data: - description: The list of DORA events. - items: - $ref: '#/components/schemas/DORAEvent' - type: array - type: object DashboardListAddItemsRequest: description: Request containing a list of dashboards to add. properties: @@ -33334,6 +33513,8 @@ components: description: The `microsoft_sentinel` destination forwards logs to Microsoft Sentinel. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' client_id: description: Azure AD client ID used for authentication. example: a1b2c3d4-5678-90ab-cdef-1234567890ab @@ -35211,6 +35392,8 @@ components: properties: auth: $ref: '#/components/schemas/ObservabilityPipelineAmazonOpenSearchDestinationAuth' + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' bulk_index: description: The index to write logs to. example: logs-index @@ -35287,6 +35470,8 @@ components: description: S3 bucket name. example: error-logs type: string + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' id: description: Unique identifier for the destination component. example: amazon-s3-destination @@ -35398,6 +35583,8 @@ components: description: Name of the Amazon S3 bucket in Security Lake (3-63 characters). example: security-lake-bucket type: string + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' custom_source_name: description: Custom source name for the logs in Security Lake. example: my-custom-source @@ -35455,6 +35642,39 @@ components: role session. type: string type: object + ObservabilityPipelineBufferOptions: + description: Configuration for buffer settings on destination components. + oneOf: + - $ref: '#/components/schemas/ObservabilityPipelineDiskBufferOptions' + - $ref: '#/components/schemas/ObservabilityPipelineMemoryBufferOptions' + - $ref: '#/components/schemas/ObservabilityPipelineMemoryBufferSizeOptions' + ObservabilityPipelineBufferOptionsDiskType: + default: disk + description: The type of the buffer that will be configured, a disk buffer. + enum: + - disk + type: string + x-enum-varnames: + - DISK + ObservabilityPipelineBufferOptionsMemoryType: + default: memory + description: The type of the buffer that will be configured, a memory buffer. + enum: + - memory + type: string + x-enum-varnames: + - MEMORY + ObservabilityPipelineBufferOptionsWhenFull: + default: block + description: Behavior when the buffer is full (block and stop accepting new + events, or drop new events) + enum: + - block + - drop_newest + type: string + x-enum-varnames: + - BLOCK + - DROP_NEWEST ObservabilityPipelineComponentDisplayName: description: The display name for a component. example: my component @@ -35641,6 +35861,8 @@ components: description: The `crowdstrike_next_gen_siem` destination forwards logs to CrowdStrike Next Gen SIEM. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' compression: $ref: '#/components/schemas/ObservabilityPipelineCrowdStrikeNextGenSiemDestinationCompression' encoding: @@ -35849,6 +36071,8 @@ components: ObservabilityPipelineDatadogLogsDestination: description: The `datadog_logs` destination forwards logs to Datadog Log Management. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' id: description: The unique identifier for this component. example: datadog-logs-destination @@ -36020,12 +36244,27 @@ components: type: string x-enum-varnames: - DEDUPE + ObservabilityPipelineDiskBufferOptions: + description: Options for configuring a disk buffer. + properties: + max_size: + description: Maximum size of the disk buffer. + example: 4096 + format: int64 + type: integer + type: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptionsDiskType' + when_full: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptionsWhenFull' + type: object ObservabilityPipelineElasticsearchDestination: description: The `elasticsearch` destination writes logs to an Elasticsearch cluster. properties: api_version: $ref: '#/components/schemas/ObservabilityPipelineElasticsearchDestinationApiVersion' + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' bulk_index: description: The index to write logs to in Elasticsearch. example: logs-index @@ -36496,6 +36735,8 @@ components: properties: auth: $ref: '#/components/schemas/ObservabilityPipelineGcpAuth' + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' customer_id: description: The Google Chronicle customer ID. example: abcdefg123456789 @@ -36559,6 +36800,8 @@ components: description: Name of the GCS bucket. example: error-logs type: string + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' id: description: Unique identifier for the destination component. example: gcs-destination @@ -36638,6 +36881,8 @@ components: properties: auth: $ref: '#/components/schemas/ObservabilityPipelineGcpAuth' + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' encoding: $ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestinationEncoding' id: @@ -36925,6 +37170,28 @@ components: type: string x-enum-varnames: - LOGSTASH + ObservabilityPipelineMemoryBufferOptions: + description: Options for configuring a memory buffer by byte size. + properties: + max_size: + description: Maximum size of the disk buffer. + example: 4096 + format: int64 + type: integer + type: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptionsMemoryType' + type: object + ObservabilityPipelineMemoryBufferSizeOptions: + description: Options for configuring a memory buffer by queue length. + properties: + max_events: + description: Maximum events for the memory buffer. + example: 500 + format: int64 + type: integer + type: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptionsMemoryType' + type: object ObservabilityPipelineMetadataEntry: description: A custom metadata entry. properties: @@ -36948,6 +37215,8 @@ components: ObservabilityPipelineNewRelicDestination: description: The `new_relic` destination sends logs to the New Relic platform. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' id: description: The unique identifier for this component. example: new-relic-destination @@ -37084,6 +37353,8 @@ components: ObservabilityPipelineOpenSearchDestination: description: The `opensearch` destination writes logs to an OpenSearch cluster. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' bulk_index: description: The index to write logs to. example: logs-index @@ -37635,6 +37906,8 @@ components: description: The `rsyslog` destination forwards logs to an external `rsyslog` server over TCP or UDP using the syslog protocol. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' id: description: The unique identifier for this component. example: rsyslog-destination @@ -38105,6 +38378,8 @@ components: ObservabilityPipelineSentinelOneDestination: description: The `sentinel_one` destination sends logs to SentinelOne. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' id: description: The unique identifier for this component. example: sentinelone-destination @@ -38154,6 +38429,8 @@ components: description: The `socket` destination sends logs over TCP or UDP to a remote server. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' encoding: $ref: '#/components/schemas/ObservabilityPipelineSocketDestinationEncoding' framing: @@ -38453,6 +38730,8 @@ components: If `false`, Splunk assigns the time the event was received.' example: true type: boolean + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' encoding: $ref: '#/components/schemas/ObservabilityPipelineSplunkHecDestinationEncoding' id: @@ -38562,6 +38841,8 @@ components: ObservabilityPipelineSumoLogicDestination: description: The `sumo_logic` destination forwards logs to Sumo Logic. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' encoding: $ref: '#/components/schemas/ObservabilityPipelineSumoLogicDestinationEncoding' header_custom_fields: @@ -38665,6 +38946,8 @@ components: description: The `syslog_ng` destination forwards logs to an external `syslog-ng` server over TCP or UDP using the syslog protocol. properties: + buffer: + $ref: '#/components/schemas/ObservabilityPipelineBufferOptions' id: description: The unique identifier for this component. example: syslog-ng-destination @@ -67820,7 +68103,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DORAListResponse' + $ref: '#/components/schemas/DORADeploymentsListResponse' description: OK '400': content: @@ -67858,26 +68141,8 @@ paths: '200': content: application/json: - example: - data: - attributes: - custom_tags: - - language:java - - department:engineering - - region:us-east-1 - env: staging - finished_at: 1693491984000000000 - git: - commit_sha: 66adc9350f2cc9b250b69abddab733dd55e1a588 - repository_url: https://github.com/organization/example-repository - service: shopist - started_at: 1693491974000000000 - team: backend - version: v1.12.07 - id: 4242fcdd31586083 - type: dora_deployment - schema: - $ref: '#/components/schemas/DORAFetchResponse' + schema: + $ref: '#/components/schemas/DORADeploymentFetchResponse' description: OK '400': content: @@ -67994,66 +68259,8 @@ paths: '200': content: application/json: - example: - data: - - attributes: - custom_tags: - - language:java - - department:engineering - - region:us-east-1 - env: production - finished_at: 1693491984000000000 - git: - commit_sha: 66adc9350f2cc9b250b69abddab733dd55e1a588 - repository_url: https://github.com/organization/example-repository - name: Web server is down; all requests are failing. - services: - - shopist - severity: SEV-1 - started_at: 1693491974000000000 - team: backend - id: 4242fcdd31586085 - type: dora_failure - - attributes: - custom_tags: - - language:go - - department:platform - env: production - finished_at: 1693492084000000000 - git: - commit_sha: 77bdc9350f2cc9b250b69abddab733dd55e1a599 - repository_url: https://github.com/organization/api-service - name: Database connection timeout - services: - - api-service - - payment-service - severity: SEV-1 - started_at: 1693492074000000000 - team: platform - version: v2.1.0 - id: 4242fcdd31586086 - type: dora_failure - - attributes: - custom_tags: - - language:python - - department:payments - - region:eu-west-1 - env: staging - finished_at: 1693492204000000000 - git: - commit_sha: 99edc9350f2cc9b250b69abddab733dd55e1a601 - repository_url: https://github.com/organization/payment-service - name: Payment gateway API rate limit exceeded - services: - - payment-service - severity: SEV-2 - started_at: 1693492174000000000 - team: payments - version: v1.8.3 - id: 4242fcdd31586087 - type: dora_failure - schema: - $ref: '#/components/schemas/DORAListResponse' + schema: + $ref: '#/components/schemas/DORAFailuresListResponse' description: OK '400': content: @@ -68091,28 +68298,8 @@ paths: '200': content: application/json: - example: - data: - attributes: - custom_tags: - - language:java - - department:engineering - - region:us-east-1 - env: staging - finished_at: 1693491984000000000 - git: - commit_sha: 66adc9350f2cc9b250b69abddab733dd55e1a588 - repository_url: https://github.com/organization/example-repository - name: Web server is down; all requests are failing. - services: - - shopist - severity: High - started_at: 1693491974000000000 - team: backend - id: 4242fcdd31586085 - type: dora_failure - schema: - $ref: '#/components/schemas/DORAFetchResponse' + schema: + $ref: '#/components/schemas/DORAFailureFetchResponse' description: OK '400': content: diff --git a/src/datadogV2/api/api_dora_metrics.rs b/src/datadogV2/api/api_dora_metrics.rs index b56bf7093..9a68d1e32 100644 --- a/src/datadogV2/api/api_dora_metrics.rs +++ b/src/datadogV2/api/api_dora_metrics.rs @@ -808,8 +808,10 @@ impl DORAMetricsAPI { pub async fn get_dora_deployment( &self, deployment_id: String, - ) -> Result> - { + ) -> Result< + crate::datadogV2::model::DORADeploymentFetchResponse, + datadog::Error, + > { match self.get_dora_deployment_with_http_info(deployment_id).await { Ok(response_content) => { if let Some(e) = response_content.entity { @@ -829,7 +831,7 @@ impl DORAMetricsAPI { &self, deployment_id: String, ) -> Result< - datadog::ResponseContent, + datadog::ResponseContent, datadog::Error, > { let local_configuration = &self.config; @@ -887,8 +889,9 @@ impl DORAMetricsAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::(&local_content) - { + match serde_json::from_str::( + &local_content, + ) { Ok(e) => { return Ok(datadog::ResponseContent { status: local_status, @@ -914,8 +917,10 @@ impl DORAMetricsAPI { pub async fn get_dora_failure( &self, failure_id: String, - ) -> Result> - { + ) -> Result< + crate::datadogV2::model::DORAFailureFetchResponse, + datadog::Error, + > { match self.get_dora_failure_with_http_info(failure_id).await { Ok(response_content) => { if let Some(e) = response_content.entity { @@ -935,7 +940,7 @@ impl DORAMetricsAPI { &self, failure_id: String, ) -> Result< - datadog::ResponseContent, + datadog::ResponseContent, datadog::Error, > { let local_configuration = &self.config; @@ -993,8 +998,9 @@ impl DORAMetricsAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::(&local_content) - { + match serde_json::from_str::( + &local_content, + ) { Ok(e) => { return Ok(datadog::ResponseContent { status: local_status, @@ -1020,8 +1026,10 @@ impl DORAMetricsAPI { pub async fn list_dora_deployments( &self, body: crate::datadogV2::model::DORAListDeploymentsRequest, - ) -> Result> - { + ) -> Result< + crate::datadogV2::model::DORADeploymentsListResponse, + datadog::Error, + > { match self.list_dora_deployments_with_http_info(body).await { Ok(response_content) => { if let Some(e) = response_content.entity { @@ -1041,7 +1049,7 @@ impl DORAMetricsAPI { &self, body: crate::datadogV2::model::DORAListDeploymentsRequest, ) -> Result< - datadog::ResponseContent, + datadog::ResponseContent, datadog::Error, > { let local_configuration = &self.config; @@ -1144,8 +1152,9 @@ impl DORAMetricsAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::(&local_content) - { + match serde_json::from_str::( + &local_content, + ) { Ok(e) => { return Ok(datadog::ResponseContent { status: local_status, @@ -1171,8 +1180,10 @@ impl DORAMetricsAPI { pub async fn list_dora_failures( &self, body: crate::datadogV2::model::DORAListFailuresRequest, - ) -> Result> - { + ) -> Result< + crate::datadogV2::model::DORAFailuresListResponse, + datadog::Error, + > { match self.list_dora_failures_with_http_info(body).await { Ok(response_content) => { if let Some(e) = response_content.entity { @@ -1192,7 +1203,7 @@ impl DORAMetricsAPI { &self, body: crate::datadogV2::model::DORAListFailuresRequest, ) -> Result< - datadog::ResponseContent, + datadog::ResponseContent, datadog::Error, > { let local_configuration = &self.config; @@ -1295,8 +1306,9 @@ impl DORAMetricsAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::(&local_content) - { + match serde_json::from_str::( + &local_content, + ) { Ok(e) => { return Ok(datadog::ResponseContent { status: local_status, diff --git a/src/datadogV2/model/mod.rs b/src/datadogV2/model/mod.rs index 5bc89fdeb..63e15d5b9 100644 --- a/src/datadogV2/model/mod.rs +++ b/src/datadogV2/model/mod.rs @@ -2306,12 +2306,14 @@ pub mod model_dora_list_deployments_request_attributes; pub use self::model_dora_list_deployments_request_attributes::DORAListDeploymentsRequestAttributes; pub mod model_dora_list_deployments_request_data_type; pub use self::model_dora_list_deployments_request_data_type::DORAListDeploymentsRequestDataType; -pub mod model_dora_list_response; -pub use self::model_dora_list_response::DORAListResponse; -pub mod model_dora_event; -pub use self::model_dora_event::DORAEvent; -pub mod model_dora_fetch_response; -pub use self::model_dora_fetch_response::DORAFetchResponse; +pub mod model_dora_deployments_list_response; +pub use self::model_dora_deployments_list_response::DORADeploymentsListResponse; +pub mod model_dora_deployment_object; +pub use self::model_dora_deployment_object::DORADeploymentObject; +pub mod model_dora_deployment_object_attributes; +pub use self::model_dora_deployment_object_attributes::DORADeploymentObjectAttributes; +pub mod model_dora_deployment_fetch_response; +pub use self::model_dora_deployment_fetch_response::DORADeploymentFetchResponse; pub mod model_dora_failure_request; pub use self::model_dora_failure_request::DORAFailureRequest; pub mod model_dora_failure_request_data; @@ -2332,6 +2334,14 @@ pub mod model_dora_list_failures_request_attributes; pub use self::model_dora_list_failures_request_attributes::DORAListFailuresRequestAttributes; pub mod model_dora_list_failures_request_data_type; pub use self::model_dora_list_failures_request_data_type::DORAListFailuresRequestDataType; +pub mod model_dora_failures_list_response; +pub use self::model_dora_failures_list_response::DORAFailuresListResponse; +pub mod model_dora_incident_object; +pub use self::model_dora_incident_object::DORAIncidentObject; +pub mod model_dora_incident_object_attributes; +pub use self::model_dora_incident_object_attributes::DORAIncidentObjectAttributes; +pub mod model_dora_failure_fetch_response; +pub use self::model_dora_failure_fetch_response::DORAFailureFetchResponse; pub mod model_list_downtimes_response; pub use self::model_list_downtimes_response::ListDowntimesResponse; pub mod model_downtime_response_data; @@ -5014,6 +5024,20 @@ pub mod model_observability_pipeline_config; pub use self::model_observability_pipeline_config::ObservabilityPipelineConfig; pub mod model_observability_pipeline_datadog_logs_destination; pub use self::model_observability_pipeline_datadog_logs_destination::ObservabilityPipelineDatadogLogsDestination; +pub mod model_observability_pipeline_disk_buffer_options; +pub use self::model_observability_pipeline_disk_buffer_options::ObservabilityPipelineDiskBufferOptions; +pub mod model_observability_pipeline_buffer_options_disk_type; +pub use self::model_observability_pipeline_buffer_options_disk_type::ObservabilityPipelineBufferOptionsDiskType; +pub mod model_observability_pipeline_buffer_options_when_full; +pub use self::model_observability_pipeline_buffer_options_when_full::ObservabilityPipelineBufferOptionsWhenFull; +pub mod model_observability_pipeline_memory_buffer_options; +pub use self::model_observability_pipeline_memory_buffer_options::ObservabilityPipelineMemoryBufferOptions; +pub mod model_observability_pipeline_buffer_options_memory_type; +pub use self::model_observability_pipeline_buffer_options_memory_type::ObservabilityPipelineBufferOptionsMemoryType; +pub mod model_observability_pipeline_memory_buffer_size_options; +pub use self::model_observability_pipeline_memory_buffer_size_options::ObservabilityPipelineMemoryBufferSizeOptions; +pub mod model_observability_pipeline_buffer_options; +pub use self::model_observability_pipeline_buffer_options::ObservabilityPipelineBufferOptions; pub mod model_observability_pipeline_datadog_logs_destination_type; pub use self::model_observability_pipeline_datadog_logs_destination_type::ObservabilityPipelineDatadogLogsDestinationType; pub mod model_observability_pipeline_amazon_s3_destination; diff --git a/src/datadogV2/model/model_azure_storage_destination.rs b/src/datadogV2/model/model_azure_storage_destination.rs index 3725cf911..277b3c34a 100644 --- a/src/datadogV2/model/model_azure_storage_destination.rs +++ b/src/datadogV2/model/model_azure_storage_destination.rs @@ -14,6 +14,9 @@ pub struct AzureStorageDestination { /// Optional prefix for blobs written to the container. #[serde(rename = "blob_prefix")] pub blob_prefix: Option, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The name of the Azure Blob Storage container to store logs in. #[serde(rename = "container_name")] pub container_name: String, @@ -42,6 +45,7 @@ impl AzureStorageDestination { ) -> AzureStorageDestination { AzureStorageDestination { blob_prefix: None, + buffer: None, container_name, id, inputs, @@ -56,6 +60,14 @@ impl AzureStorageDestination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -83,6 +95,9 @@ impl<'de> Deserialize<'de> for AzureStorageDestination { M: MapAccess<'a>, { let mut blob_prefix: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut container_name: Option = None; let mut id: Option = None; let mut inputs: Option> = None; @@ -102,6 +117,20 @@ impl<'de> Deserialize<'de> for AzureStorageDestination { blob_prefix = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "container_name" => { container_name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); @@ -138,6 +167,7 @@ impl<'de> Deserialize<'de> for AzureStorageDestination { let content = AzureStorageDestination { blob_prefix, + buffer, container_name, id, inputs, diff --git a/src/datadogV2/model/model_dora_deployment_fetch_response.rs b/src/datadogV2/model/model_dora_deployment_fetch_response.rs new file mode 100644 index 000000000..7b848c1c4 --- /dev/null +++ b/src/datadogV2/model/model_dora_deployment_fetch_response.rs @@ -0,0 +1,105 @@ +// 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}; + +/// Response for fetching a single deployment event. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct DORADeploymentFetchResponse { + /// A DORA deployment event. + #[serde(rename = "data")] + pub data: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl DORADeploymentFetchResponse { + pub fn new() -> DORADeploymentFetchResponse { + DORADeploymentFetchResponse { + data: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn data(mut self, value: crate::datadogV2::model::DORADeploymentObject) -> Self { + self.data = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for DORADeploymentFetchResponse { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for DORADeploymentFetchResponse { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct DORADeploymentFetchResponseVisitor; + impl<'a> Visitor<'a> for DORADeploymentFetchResponseVisitor { + type Value = DORADeploymentFetchResponse; + + 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 data: Option = 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() { + "data" => { + if v.is_null() { + continue; + } + data = 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 content = DORADeploymentFetchResponse { + data, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(DORADeploymentFetchResponseVisitor) + } +} diff --git a/src/datadogV2/model/model_dora_deployment_object.rs b/src/datadogV2/model/model_dora_deployment_object.rs new file mode 100644 index 000000000..0dc6cba5d --- /dev/null +++ b/src/datadogV2/model/model_dora_deployment_object.rs @@ -0,0 +1,154 @@ +// 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 DORA deployment event. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct DORADeploymentObject { + /// The attributes of the deployment event. + #[serde(rename = "attributes")] + pub attributes: Option, + /// The ID of the deployment event. + #[serde(rename = "id")] + pub id: Option, + /// JSON:API type for DORA deployment events. + #[serde(rename = "type")] + pub type_: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl DORADeploymentObject { + pub fn new() -> DORADeploymentObject { + DORADeploymentObject { + attributes: None, + id: None, + type_: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn attributes( + mut self, + value: crate::datadogV2::model::DORADeploymentObjectAttributes, + ) -> Self { + self.attributes = Some(value); + self + } + + pub fn id(mut self, value: String) -> Self { + self.id = Some(value); + self + } + + pub fn type_(mut self, value: crate::datadogV2::model::DORADeploymentType) -> Self { + self.type_ = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for DORADeploymentObject { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for DORADeploymentObject { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct DORADeploymentObjectVisitor; + impl<'a> Visitor<'a> for DORADeploymentObjectVisitor { + type Value = DORADeploymentObject; + + 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 attributes: Option< + crate::datadogV2::model::DORADeploymentObjectAttributes, + > = None; + let mut id: Option = None; + let mut type_: Option = 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() { + "attributes" => { + if v.is_null() { + continue; + } + attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "id" => { + if v.is_null() { + continue; + } + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + if v.is_null() { + continue; + } + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::DORADeploymentType::UnparsedObject( + _type_, + ) => { + _unparsed = true; + } + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = DORADeploymentObject { + attributes, + id, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(DORADeploymentObjectVisitor) + } +} diff --git a/src/datadogV2/model/model_dora_deployment_object_attributes.rs b/src/datadogV2/model/model_dora_deployment_object_attributes.rs new file mode 100644 index 000000000..a50f68b8a --- /dev/null +++ b/src/datadogV2/model/model_dora_deployment_object_attributes.rs @@ -0,0 +1,205 @@ +// 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}; + +/// The attributes of the deployment event. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct DORADeploymentObjectAttributes { + /// A list of user-defined tags. The tags must follow the `key:value` pattern. Up to 100 may be added per event. + #[serde( + rename = "custom_tags", + default, + with = "::serde_with::rust::double_option" + )] + pub custom_tags: Option>>, + /// Environment name to where the service was deployed. + #[serde(rename = "env")] + pub env: Option, + /// Unix timestamp when the deployment finished. + #[serde(rename = "finished_at")] + pub finished_at: i64, + /// Git info for DORA Metrics events. + #[serde(rename = "git")] + pub git: Option, + /// Service name. + #[serde(rename = "service")] + pub service: String, + /// Unix timestamp when the deployment started. + #[serde(rename = "started_at")] + pub started_at: i64, + /// Name of the team owning the deployed service. + #[serde(rename = "team")] + pub team: Option, + /// Version to correlate with APM Deployment Tracking. + #[serde(rename = "version")] + pub version: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl DORADeploymentObjectAttributes { + pub fn new( + finished_at: i64, + service: String, + started_at: i64, + ) -> DORADeploymentObjectAttributes { + DORADeploymentObjectAttributes { + custom_tags: None, + env: None, + finished_at, + git: None, + service, + started_at, + team: None, + version: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn custom_tags(mut self, value: Option>) -> Self { + self.custom_tags = Some(value); + self + } + + pub fn env(mut self, value: String) -> Self { + self.env = Some(value); + self + } + + pub fn git(mut self, value: crate::datadogV2::model::DORAGitInfo) -> Self { + self.git = Some(value); + self + } + + pub fn team(mut self, value: String) -> Self { + self.team = Some(value); + self + } + + pub fn version(mut self, value: String) -> Self { + self.version = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for DORADeploymentObjectAttributes { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct DORADeploymentObjectAttributesVisitor; + impl<'a> Visitor<'a> for DORADeploymentObjectAttributesVisitor { + type Value = DORADeploymentObjectAttributes; + + 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 custom_tags: Option>> = None; + let mut env: Option = None; + let mut finished_at: Option = None; + let mut git: Option = None; + let mut service: Option = None; + let mut started_at: Option = None; + let mut team: Option = None; + let mut version: Option = 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() { + "custom_tags" => { + custom_tags = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "env" => { + if v.is_null() { + continue; + } + env = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "finished_at" => { + finished_at = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "git" => { + if v.is_null() { + continue; + } + git = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "service" => { + service = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "started_at" => { + started_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "team" => { + if v.is_null() { + continue; + } + team = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "version" => { + if v.is_null() { + continue; + } + version = 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 finished_at = + finished_at.ok_or_else(|| M::Error::missing_field("finished_at"))?; + let service = service.ok_or_else(|| M::Error::missing_field("service"))?; + let started_at = started_at.ok_or_else(|| M::Error::missing_field("started_at"))?; + + let content = DORADeploymentObjectAttributes { + custom_tags, + env, + finished_at, + git, + service, + started_at, + team, + version, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(DORADeploymentObjectAttributesVisitor) + } +} diff --git a/src/datadogV2/model/model_dora_deployments_list_response.rs b/src/datadogV2/model/model_dora_deployments_list_response.rs new file mode 100644 index 000000000..882a97732 --- /dev/null +++ b/src/datadogV2/model/model_dora_deployments_list_response.rs @@ -0,0 +1,105 @@ +// 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}; + +/// Response for the list deployments endpoint. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct DORADeploymentsListResponse { + /// The list of DORA deployment events. + #[serde(rename = "data")] + pub data: Option>, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl DORADeploymentsListResponse { + pub fn new() -> DORADeploymentsListResponse { + DORADeploymentsListResponse { + data: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn data(mut self, value: Vec) -> Self { + self.data = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for DORADeploymentsListResponse { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for DORADeploymentsListResponse { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct DORADeploymentsListResponseVisitor; + impl<'a> Visitor<'a> for DORADeploymentsListResponseVisitor { + type Value = DORADeploymentsListResponse; + + 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 data: Option> = 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() { + "data" => { + if v.is_null() { + continue; + } + data = 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 content = DORADeploymentsListResponse { + data, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(DORADeploymentsListResponseVisitor) + } +} diff --git a/src/datadogV2/model/model_dora_fetch_response.rs b/src/datadogV2/model/model_dora_failure_fetch_response.rs similarity index 77% rename from src/datadogV2/model/model_dora_fetch_response.rs rename to src/datadogV2/model/model_dora_failure_fetch_response.rs index fcc035316..6beb9165f 100644 --- a/src/datadogV2/model/model_dora_fetch_response.rs +++ b/src/datadogV2/model/model_dora_failure_fetch_response.rs @@ -6,14 +6,14 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_with::skip_serializing_none; use std::fmt::{self, Formatter}; -/// Response for the DORA fetch endpoints. +/// Response for fetching a single failure event. #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DORAFetchResponse { - /// A DORA event. +pub struct DORAFailureFetchResponse { + /// A DORA incident event. #[serde(rename = "data")] - pub data: Option, + pub data: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -21,16 +21,16 @@ pub struct DORAFetchResponse { pub(crate) _unparsed: bool, } -impl DORAFetchResponse { - pub fn new() -> DORAFetchResponse { - DORAFetchResponse { +impl DORAFailureFetchResponse { + pub fn new() -> DORAFailureFetchResponse { + DORAFailureFetchResponse { data: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } - pub fn data(mut self, value: crate::datadogV2::model::DORAEvent) -> Self { + pub fn data(mut self, value: crate::datadogV2::model::DORAIncidentObject) -> Self { self.data = Some(value); self } @@ -44,20 +44,20 @@ impl DORAFetchResponse { } } -impl Default for DORAFetchResponse { +impl Default for DORAFailureFetchResponse { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for DORAFetchResponse { +impl<'de> Deserialize<'de> for DORAFailureFetchResponse { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct DORAFetchResponseVisitor; - impl<'a> Visitor<'a> for DORAFetchResponseVisitor { - type Value = DORAFetchResponse; + struct DORAFailureFetchResponseVisitor; + impl<'a> Visitor<'a> for DORAFailureFetchResponseVisitor { + type Value = DORAFailureFetchResponse; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -67,7 +67,7 @@ impl<'de> Deserialize<'de> for DORAFetchResponse { where M: MapAccess<'a>, { - let mut data: Option = None; + let mut data: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -90,7 +90,7 @@ impl<'de> Deserialize<'de> for DORAFetchResponse { } } - let content = DORAFetchResponse { + let content = DORAFailureFetchResponse { data, additional_properties, _unparsed, @@ -100,6 +100,6 @@ impl<'de> Deserialize<'de> for DORAFetchResponse { } } - deserializer.deserialize_any(DORAFetchResponseVisitor) + deserializer.deserialize_any(DORAFailureFetchResponseVisitor) } } diff --git a/src/datadogV2/model/model_dora_list_response.rs b/src/datadogV2/model/model_dora_failures_list_response.rs similarity index 78% rename from src/datadogV2/model/model_dora_list_response.rs rename to src/datadogV2/model/model_dora_failures_list_response.rs index 88e26450b..bc96ce092 100644 --- a/src/datadogV2/model/model_dora_list_response.rs +++ b/src/datadogV2/model/model_dora_failures_list_response.rs @@ -6,14 +6,14 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_with::skip_serializing_none; use std::fmt::{self, Formatter}; -/// Response for the DORA list endpoints. +/// Response for the list failures endpoint. #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DORAListResponse { - /// The list of DORA events. +pub struct DORAFailuresListResponse { + /// The list of DORA incident events. #[serde(rename = "data")] - pub data: Option>, + pub data: Option>, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -21,16 +21,16 @@ pub struct DORAListResponse { pub(crate) _unparsed: bool, } -impl DORAListResponse { - pub fn new() -> DORAListResponse { - DORAListResponse { +impl DORAFailuresListResponse { + pub fn new() -> DORAFailuresListResponse { + DORAFailuresListResponse { data: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } - pub fn data(mut self, value: Vec) -> Self { + pub fn data(mut self, value: Vec) -> Self { self.data = Some(value); self } @@ -44,20 +44,20 @@ impl DORAListResponse { } } -impl Default for DORAListResponse { +impl Default for DORAFailuresListResponse { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for DORAListResponse { +impl<'de> Deserialize<'de> for DORAFailuresListResponse { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct DORAListResponseVisitor; - impl<'a> Visitor<'a> for DORAListResponseVisitor { - type Value = DORAListResponse; + struct DORAFailuresListResponseVisitor; + impl<'a> Visitor<'a> for DORAFailuresListResponseVisitor { + type Value = DORAFailuresListResponse; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -67,7 +67,7 @@ impl<'de> Deserialize<'de> for DORAListResponse { where M: MapAccess<'a>, { - let mut data: Option> = None; + let mut data: Option> = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -90,7 +90,7 @@ impl<'de> Deserialize<'de> for DORAListResponse { } } - let content = DORAListResponse { + let content = DORAFailuresListResponse { data, additional_properties, _unparsed, @@ -100,6 +100,6 @@ impl<'de> Deserialize<'de> for DORAListResponse { } } - deserializer.deserialize_any(DORAListResponseVisitor) + deserializer.deserialize_any(DORAFailuresListResponseVisitor) } } diff --git a/src/datadogV2/model/model_dora_event.rs b/src/datadogV2/model/model_dora_incident_object.rs similarity index 69% rename from src/datadogV2/model/model_dora_event.rs rename to src/datadogV2/model/model_dora_incident_object.rs index 3bebd0e01..91698b8fe 100644 --- a/src/datadogV2/model/model_dora_event.rs +++ b/src/datadogV2/model/model_dora_incident_object.rs @@ -6,20 +6,20 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_with::skip_serializing_none; use std::fmt::{self, Formatter}; -/// A DORA event. +/// A DORA incident event. #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DORAEvent { - /// The attributes of the event. +pub struct DORAIncidentObject { + /// The attributes of the incident event. #[serde(rename = "attributes")] - pub attributes: Option>, - /// The ID of the event. + pub attributes: Option, + /// The ID of the incident event. #[serde(rename = "id")] pub id: Option, - /// The type of the event. + /// JSON:API type for DORA failure events. #[serde(rename = "type")] - pub type_: Option, + pub type_: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -27,9 +27,9 @@ pub struct DORAEvent { pub(crate) _unparsed: bool, } -impl DORAEvent { - pub fn new() -> DORAEvent { - DORAEvent { +impl DORAIncidentObject { + pub fn new() -> DORAIncidentObject { + DORAIncidentObject { attributes: None, id: None, type_: None, @@ -40,7 +40,7 @@ impl DORAEvent { pub fn attributes( mut self, - value: std::collections::BTreeMap, + value: crate::datadogV2::model::DORAIncidentObjectAttributes, ) -> Self { self.attributes = Some(value); self @@ -51,7 +51,7 @@ impl DORAEvent { self } - pub fn type_(mut self, value: String) -> Self { + pub fn type_(mut self, value: crate::datadogV2::model::DORAFailureType) -> Self { self.type_ = Some(value); self } @@ -65,20 +65,20 @@ impl DORAEvent { } } -impl Default for DORAEvent { +impl Default for DORAIncidentObject { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for DORAEvent { +impl<'de> Deserialize<'de> for DORAIncidentObject { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct DORAEventVisitor; - impl<'a> Visitor<'a> for DORAEventVisitor { - type Value = DORAEvent; + struct DORAIncidentObjectVisitor; + impl<'a> Visitor<'a> for DORAIncidentObjectVisitor { + type Value = DORAIncidentObject; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -88,10 +88,10 @@ impl<'de> Deserialize<'de> for DORAEvent { where M: MapAccess<'a>, { - let mut attributes: Option> = + let mut attributes: Option = None; let mut id: Option = None; - let mut type_: Option = None; + let mut type_: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -117,6 +117,16 @@ impl<'de> Deserialize<'de> for DORAEvent { continue; } type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::DORAFailureType::UnparsedObject( + _type_, + ) => { + _unparsed = true; + } + _ => {} + } + } } &_ => { if let Ok(value) = serde_json::from_value(v.clone()) { @@ -126,7 +136,7 @@ impl<'de> Deserialize<'de> for DORAEvent { } } - let content = DORAEvent { + let content = DORAIncidentObject { attributes, id, type_, @@ -138,6 +148,6 @@ impl<'de> Deserialize<'de> for DORAEvent { } } - deserializer.deserialize_any(DORAEventVisitor) + deserializer.deserialize_any(DORAIncidentObjectVisitor) } } diff --git a/src/datadogV2/model/model_dora_incident_object_attributes.rs b/src/datadogV2/model/model_dora_incident_object_attributes.rs new file mode 100644 index 000000000..76520ace8 --- /dev/null +++ b/src/datadogV2/model/model_dora_incident_object_attributes.rs @@ -0,0 +1,248 @@ +// 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}; + +/// The attributes of the incident event. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct DORAIncidentObjectAttributes { + /// A list of user-defined tags. The tags must follow the `key:value` pattern. Up to 100 may be added per event. + #[serde( + rename = "custom_tags", + default, + with = "::serde_with::rust::double_option" + )] + pub custom_tags: Option>>, + /// Environment name that was impacted by the incident. + #[serde(rename = "env")] + pub env: Option, + /// Unix timestamp when the incident finished. + #[serde(rename = "finished_at")] + pub finished_at: Option, + /// Git info for DORA Metrics events. + #[serde(rename = "git")] + pub git: Option, + /// Incident name. + #[serde(rename = "name")] + pub name: Option, + /// Service names impacted by the incident. + #[serde(rename = "services")] + pub services: Option>, + /// Incident severity. + #[serde(rename = "severity")] + pub severity: Option, + /// Unix timestamp when the incident started. + #[serde(rename = "started_at")] + pub started_at: i64, + /// Name of the team owning the services impacted. + #[serde(rename = "team")] + pub team: Option, + /// Version to correlate with APM Deployment Tracking. + #[serde(rename = "version")] + pub version: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl DORAIncidentObjectAttributes { + pub fn new(started_at: i64) -> DORAIncidentObjectAttributes { + DORAIncidentObjectAttributes { + custom_tags: None, + env: None, + finished_at: None, + git: None, + name: None, + services: None, + severity: None, + started_at, + team: None, + version: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn custom_tags(mut self, value: Option>) -> Self { + self.custom_tags = Some(value); + self + } + + pub fn env(mut self, value: String) -> Self { + self.env = Some(value); + self + } + + pub fn finished_at(mut self, value: i64) -> Self { + self.finished_at = Some(value); + self + } + + pub fn git(mut self, value: crate::datadogV2::model::DORAGitInfo) -> Self { + self.git = Some(value); + self + } + + pub fn name(mut self, value: String) -> Self { + self.name = Some(value); + self + } + + pub fn services(mut self, value: Vec) -> Self { + self.services = Some(value); + self + } + + pub fn severity(mut self, value: String) -> Self { + self.severity = Some(value); + self + } + + pub fn team(mut self, value: String) -> Self { + self.team = Some(value); + self + } + + pub fn version(mut self, value: String) -> Self { + self.version = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for DORAIncidentObjectAttributes { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct DORAIncidentObjectAttributesVisitor; + impl<'a> Visitor<'a> for DORAIncidentObjectAttributesVisitor { + type Value = DORAIncidentObjectAttributes; + + 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 custom_tags: Option>> = None; + let mut env: Option = None; + let mut finished_at: Option = None; + let mut git: Option = None; + let mut name: Option = None; + let mut services: Option> = None; + let mut severity: Option = None; + let mut started_at: Option = None; + let mut team: Option = None; + let mut version: Option = 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() { + "custom_tags" => { + custom_tags = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "env" => { + if v.is_null() { + continue; + } + env = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "finished_at" => { + if v.is_null() { + continue; + } + finished_at = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "git" => { + if v.is_null() { + continue; + } + git = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "name" => { + if v.is_null() { + continue; + } + name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "services" => { + if v.is_null() { + continue; + } + services = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "severity" => { + if v.is_null() { + continue; + } + severity = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "started_at" => { + started_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "team" => { + if v.is_null() { + continue; + } + team = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "version" => { + if v.is_null() { + continue; + } + version = 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 started_at = started_at.ok_or_else(|| M::Error::missing_field("started_at"))?; + + let content = DORAIncidentObjectAttributes { + custom_tags, + env, + finished_at, + git, + name, + services, + severity, + started_at, + team, + version, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(DORAIncidentObjectAttributesVisitor) + } +} diff --git a/src/datadogV2/model/model_microsoft_sentinel_destination.rs b/src/datadogV2/model/model_microsoft_sentinel_destination.rs index 0f6414e05..f99dac779 100644 --- a/src/datadogV2/model/model_microsoft_sentinel_destination.rs +++ b/src/datadogV2/model/model_microsoft_sentinel_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct MicrosoftSentinelDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Azure AD client ID used for authentication. #[serde(rename = "client_id")] pub client_id: String, @@ -50,6 +53,7 @@ impl MicrosoftSentinelDestination { type_: crate::datadogV2::model::MicrosoftSentinelDestinationType, ) -> MicrosoftSentinelDestination { MicrosoftSentinelDestination { + buffer: None, client_id, dcr_immutable_id, id, @@ -62,6 +66,14 @@ impl MicrosoftSentinelDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -88,6 +100,9 @@ impl<'de> Deserialize<'de> for MicrosoftSentinelDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut client_id: Option = None; let mut dcr_immutable_id: Option = None; let mut id: Option = None; @@ -104,6 +119,20 @@ impl<'de> Deserialize<'de> for MicrosoftSentinelDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "client_id" => { client_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -151,6 +180,7 @@ impl<'de> Deserialize<'de> for MicrosoftSentinelDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = MicrosoftSentinelDestination { + buffer, client_id, dcr_immutable_id, id, diff --git a/src/datadogV2/model/model_observability_pipeline_amazon_open_search_destination.rs b/src/datadogV2/model/model_observability_pipeline_amazon_open_search_destination.rs index b3656e33a..0a7c4c61d 100644 --- a/src/datadogV2/model/model_observability_pipeline_amazon_open_search_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_amazon_open_search_destination.rs @@ -15,6 +15,9 @@ pub struct ObservabilityPipelineAmazonOpenSearchDestination { /// The `strategy` field determines whether basic or AWS-based authentication is used. #[serde(rename = "auth")] pub auth: crate::datadogV2::model::ObservabilityPipelineAmazonOpenSearchDestinationAuth, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The index to write logs to. #[serde(rename = "bulk_index")] pub bulk_index: Option, @@ -43,6 +46,7 @@ impl ObservabilityPipelineAmazonOpenSearchDestination { ) -> ObservabilityPipelineAmazonOpenSearchDestination { ObservabilityPipelineAmazonOpenSearchDestination { auth, + buffer: None, bulk_index: None, id, inputs, @@ -52,6 +56,14 @@ impl ObservabilityPipelineAmazonOpenSearchDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn bulk_index(mut self, value: String) -> Self { self.bulk_index = Some(value); self @@ -86,6 +98,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonOpenSearchDestination let mut auth: Option< crate::datadogV2::model::ObservabilityPipelineAmazonOpenSearchDestinationAuth, > = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut bulk_index: Option = None; let mut id: Option = None; let mut inputs: Option> = None; @@ -103,6 +118,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonOpenSearchDestination "auth" => { auth = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "bulk_index" => { if v.is_null() { continue; @@ -140,6 +169,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonOpenSearchDestination let content = ObservabilityPipelineAmazonOpenSearchDestination { auth, + buffer, bulk_index, id, inputs, diff --git a/src/datadogV2/model/model_observability_pipeline_amazon_s3_destination.rs b/src/datadogV2/model/model_observability_pipeline_amazon_s3_destination.rs index b7d5ff4bc..faf618afe 100644 --- a/src/datadogV2/model/model_observability_pipeline_amazon_s3_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_amazon_s3_destination.rs @@ -18,6 +18,9 @@ pub struct ObservabilityPipelineAmazonS3Destination { /// S3 bucket name. #[serde(rename = "bucket")] pub bucket: String, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Unique identifier for the destination component. #[serde(rename = "id")] pub id: String, @@ -59,6 +62,7 @@ impl ObservabilityPipelineAmazonS3Destination { ObservabilityPipelineAmazonS3Destination { auth: None, bucket, + buffer: None, id, inputs, key_prefix: None, @@ -76,6 +80,14 @@ impl ObservabilityPipelineAmazonS3Destination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn key_prefix(mut self, value: String) -> Self { self.key_prefix = Some(value); self @@ -114,6 +126,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonS3Destination { { let mut auth: Option = None; let mut bucket: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut id: Option = None; let mut inputs: Option> = None; let mut key_prefix: Option = None; @@ -142,6 +157,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonS3Destination { "bucket" => { bucket = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -204,6 +233,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonS3Destination { let content = ObservabilityPipelineAmazonS3Destination { auth, bucket, + buffer, id, inputs, key_prefix, diff --git a/src/datadogV2/model/model_observability_pipeline_amazon_security_lake_destination.rs b/src/datadogV2/model/model_observability_pipeline_amazon_security_lake_destination.rs index 110897d39..1ec06a251 100644 --- a/src/datadogV2/model/model_observability_pipeline_amazon_security_lake_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_amazon_security_lake_destination.rs @@ -18,6 +18,9 @@ pub struct ObservabilityPipelineAmazonSecurityLakeDestination { /// Name of the Amazon S3 bucket in Security Lake (3-63 characters). #[serde(rename = "bucket")] pub bucket: String, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Custom source name for the logs in Security Lake. #[serde(rename = "custom_source_name")] pub custom_source_name: String, @@ -55,6 +58,7 @@ impl ObservabilityPipelineAmazonSecurityLakeDestination { ObservabilityPipelineAmazonSecurityLakeDestination { auth: None, bucket, + buffer: None, custom_source_name, id, inputs, @@ -71,6 +75,14 @@ impl ObservabilityPipelineAmazonSecurityLakeDestination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn tls(mut self, value: crate::datadogV2::model::ObservabilityPipelineTls) -> Self { self.tls = Some(value); self @@ -104,6 +116,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonSecurityLakeDestinatio { let mut auth: Option = None; let mut bucket: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut custom_source_name: Option = None; let mut id: Option = None; let mut inputs: Option> = None; @@ -129,6 +144,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonSecurityLakeDestinatio "bucket" => { bucket = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "custom_source_name" => { custom_source_name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); @@ -177,6 +206,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineAmazonSecurityLakeDestinatio let content = ObservabilityPipelineAmazonSecurityLakeDestination { auth, bucket, + buffer, custom_source_name, id, inputs, diff --git a/src/datadogV2/model/model_observability_pipeline_buffer_options.rs b/src/datadogV2/model/model_observability_pipeline_buffer_options.rs new file mode 100644 index 000000000..78ee487f8 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_buffer_options.rs @@ -0,0 +1,64 @@ +// 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::{Deserialize, Deserializer, Serialize}; + +/// Configuration for buffer settings on destination components. +#[non_exhaustive] +#[derive(Clone, Debug, PartialEq, Serialize)] +#[serde(untagged)] +pub enum ObservabilityPipelineBufferOptions { + ObservabilityPipelineDiskBufferOptions( + Box, + ), + ObservabilityPipelineMemoryBufferOptions( + Box, + ), + ObservabilityPipelineMemoryBufferSizeOptions( + Box, + ), + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineBufferOptions { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let value: serde_json::Value = Deserialize::deserialize(deserializer)?; + if let Ok(_v) = serde_json::from_value::< + Box, + >(value.clone()) + { + if !_v._unparsed { + return Ok( + ObservabilityPipelineBufferOptions::ObservabilityPipelineDiskBufferOptions(_v), + ); + } + } + if let Ok(_v) = serde_json::from_value::< + Box, + >(value.clone()) + { + if !_v._unparsed { + return Ok( + ObservabilityPipelineBufferOptions::ObservabilityPipelineMemoryBufferOptions( + _v, + ), + ); + } + } + if let Ok(_v) = serde_json::from_value::< + Box, + >(value.clone()) + { + if !_v._unparsed { + return Ok(ObservabilityPipelineBufferOptions::ObservabilityPipelineMemoryBufferSizeOptions(_v)); + } + } + + return Ok(ObservabilityPipelineBufferOptions::UnparsedObject( + crate::datadog::UnparsedObject { value }, + )); + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_buffer_options_disk_type.rs b/src/datadogV2/model/model_observability_pipeline_buffer_options_disk_type.rs new file mode 100644 index 000000000..1a66bb008 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_buffer_options_disk_type.rs @@ -0,0 +1,48 @@ +// 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::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum ObservabilityPipelineBufferOptionsDiskType { + DISK, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for ObservabilityPipelineBufferOptionsDiskType { + fn to_string(&self) -> String { + match self { + Self::DISK => String::from("disk"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for ObservabilityPipelineBufferOptionsDiskType { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineBufferOptionsDiskType { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "disk" => Self::DISK, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_buffer_options_memory_type.rs b/src/datadogV2/model/model_observability_pipeline_buffer_options_memory_type.rs new file mode 100644 index 000000000..0b742549a --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_buffer_options_memory_type.rs @@ -0,0 +1,48 @@ +// 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::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum ObservabilityPipelineBufferOptionsMemoryType { + MEMORY, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for ObservabilityPipelineBufferOptionsMemoryType { + fn to_string(&self) -> String { + match self { + Self::MEMORY => String::from("memory"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for ObservabilityPipelineBufferOptionsMemoryType { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineBufferOptionsMemoryType { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "memory" => Self::MEMORY, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_buffer_options_when_full.rs b/src/datadogV2/model/model_observability_pipeline_buffer_options_when_full.rs new file mode 100644 index 000000000..9184a1929 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_buffer_options_when_full.rs @@ -0,0 +1,51 @@ +// 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::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum ObservabilityPipelineBufferOptionsWhenFull { + BLOCK, + DROP_NEWEST, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for ObservabilityPipelineBufferOptionsWhenFull { + fn to_string(&self) -> String { + match self { + Self::BLOCK => String::from("block"), + Self::DROP_NEWEST => String::from("drop_newest"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for ObservabilityPipelineBufferOptionsWhenFull { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineBufferOptionsWhenFull { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "block" => Self::BLOCK, + "drop_newest" => Self::DROP_NEWEST, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_crowd_strike_next_gen_siem_destination.rs b/src/datadogV2/model/model_observability_pipeline_crowd_strike_next_gen_siem_destination.rs index 60635a355..92cbfe36c 100644 --- a/src/datadogV2/model/model_observability_pipeline_crowd_strike_next_gen_siem_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_crowd_strike_next_gen_siem_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineCrowdStrikeNextGenSiemDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Compression configuration for log events. #[serde(rename = "compression")] pub compression: Option< @@ -47,6 +50,7 @@ impl ObservabilityPipelineCrowdStrikeNextGenSiemDestination { type_: crate::datadogV2::model::ObservabilityPipelineCrowdStrikeNextGenSiemDestinationType, ) -> ObservabilityPipelineCrowdStrikeNextGenSiemDestination { ObservabilityPipelineCrowdStrikeNextGenSiemDestination { + buffer: None, compression: None, encoding, id, @@ -58,6 +62,14 @@ impl ObservabilityPipelineCrowdStrikeNextGenSiemDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn compression( mut self, value: crate::datadogV2::model::ObservabilityPipelineCrowdStrikeNextGenSiemDestinationCompression, @@ -97,6 +109,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCrowdStrikeNextGenSiemDestin where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut compression: Option = None; let mut encoding: Option = None; let mut id: Option = None; @@ -111,6 +126,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCrowdStrikeNextGenSiemDestin while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "compression" => { if v.is_null() { continue; @@ -165,6 +194,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineCrowdStrikeNextGenSiemDestin let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineCrowdStrikeNextGenSiemDestination { + buffer, compression, encoding, id, diff --git a/src/datadogV2/model/model_observability_pipeline_datadog_logs_destination.rs b/src/datadogV2/model/model_observability_pipeline_datadog_logs_destination.rs index a6ca36604..6521694cb 100644 --- a/src/datadogV2/model/model_observability_pipeline_datadog_logs_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_datadog_logs_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineDatadogLogsDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The unique identifier for this component. #[serde(rename = "id")] pub id: String, @@ -34,6 +37,7 @@ impl ObservabilityPipelineDatadogLogsDestination { type_: crate::datadogV2::model::ObservabilityPipelineDatadogLogsDestinationType, ) -> ObservabilityPipelineDatadogLogsDestination { ObservabilityPipelineDatadogLogsDestination { + buffer: None, id, inputs, type_, @@ -42,6 +46,14 @@ impl ObservabilityPipelineDatadogLogsDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -68,6 +80,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogLogsDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut id: Option = None; let mut inputs: Option> = None; let mut type_: Option< @@ -81,6 +96,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogLogsDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -110,6 +139,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineDatadogLogsDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineDatadogLogsDestination { + buffer, id, inputs, type_, diff --git a/src/datadogV2/model/model_observability_pipeline_disk_buffer_options.rs b/src/datadogV2/model/model_observability_pipeline_disk_buffer_options.rs new file mode 100644 index 000000000..05174d460 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_disk_buffer_options.rs @@ -0,0 +1,165 @@ +// 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}; + +/// Options for configuring a disk buffer. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct ObservabilityPipelineDiskBufferOptions { + /// Maximum size of the disk buffer. + #[serde(rename = "max_size")] + pub max_size: Option, + /// The type of the buffer that will be configured, a disk buffer. + #[serde(rename = "type")] + pub type_: Option, + /// Behavior when the buffer is full (block and stop accepting new events, or drop new events) + #[serde(rename = "when_full")] + pub when_full: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl ObservabilityPipelineDiskBufferOptions { + pub fn new() -> ObservabilityPipelineDiskBufferOptions { + ObservabilityPipelineDiskBufferOptions { + max_size: None, + type_: None, + when_full: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn max_size(mut self, value: i64) -> Self { + self.max_size = Some(value); + self + } + + pub fn type_( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptionsDiskType, + ) -> Self { + self.type_ = Some(value); + self + } + + pub fn when_full( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptionsWhenFull, + ) -> Self { + self.when_full = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for ObservabilityPipelineDiskBufferOptions { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineDiskBufferOptions { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct ObservabilityPipelineDiskBufferOptionsVisitor; + impl<'a> Visitor<'a> for ObservabilityPipelineDiskBufferOptionsVisitor { + type Value = ObservabilityPipelineDiskBufferOptions; + + 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 max_size: Option = None; + let mut type_: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptionsDiskType, + > = None; + let mut when_full: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptionsWhenFull, + > = 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() { + "max_size" => { + if v.is_null() { + continue; + } + max_size = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + if v.is_null() { + continue; + } + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::ObservabilityPipelineBufferOptionsDiskType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + "when_full" => { + if v.is_null() { + continue; + } + when_full = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _when_full) = when_full { + match _when_full { + crate::datadogV2::model::ObservabilityPipelineBufferOptionsWhenFull::UnparsedObject(_when_full) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = ObservabilityPipelineDiskBufferOptions { + max_size, + type_, + when_full, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(ObservabilityPipelineDiskBufferOptionsVisitor) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_elasticsearch_destination.rs b/src/datadogV2/model/model_observability_pipeline_elasticsearch_destination.rs index e104a3eac..7b7578e39 100644 --- a/src/datadogV2/model/model_observability_pipeline_elasticsearch_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_elasticsearch_destination.rs @@ -15,6 +15,9 @@ pub struct ObservabilityPipelineElasticsearchDestination { #[serde(rename = "api_version")] pub api_version: Option, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The index to write logs to in Elasticsearch. #[serde(rename = "bulk_index")] pub bulk_index: Option, @@ -42,6 +45,7 @@ impl ObservabilityPipelineElasticsearchDestination { ) -> ObservabilityPipelineElasticsearchDestination { ObservabilityPipelineElasticsearchDestination { api_version: None, + buffer: None, bulk_index: None, id, inputs, @@ -59,6 +63,14 @@ impl ObservabilityPipelineElasticsearchDestination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn bulk_index(mut self, value: String) -> Self { self.bulk_index = Some(value); self @@ -91,6 +103,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineElasticsearchDestination { M: MapAccess<'a>, { let mut api_version: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut bulk_index: Option = None; let mut id: Option = None; let mut inputs: Option> = None; @@ -120,6 +135,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineElasticsearchDestination { } } } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "bulk_index" => { if v.is_null() { continue; @@ -156,6 +185,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineElasticsearchDestination { let content = ObservabilityPipelineElasticsearchDestination { api_version, + buffer, bulk_index, id, inputs, diff --git a/src/datadogV2/model/model_observability_pipeline_google_chronicle_destination.rs b/src/datadogV2/model/model_observability_pipeline_google_chronicle_destination.rs index 4c8ec789a..b2c282244 100644 --- a/src/datadogV2/model/model_observability_pipeline_google_chronicle_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_google_chronicle_destination.rs @@ -14,6 +14,9 @@ pub struct ObservabilityPipelineGoogleChronicleDestination { /// GCP credentials used to authenticate with Google Cloud Storage. #[serde(rename = "auth")] pub auth: Option, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The Google Chronicle customer ID. #[serde(rename = "customer_id")] pub customer_id: String, @@ -49,6 +52,7 @@ impl ObservabilityPipelineGoogleChronicleDestination { ) -> ObservabilityPipelineGoogleChronicleDestination { ObservabilityPipelineGoogleChronicleDestination { auth: None, + buffer: None, customer_id, encoding: None, id, @@ -65,6 +69,14 @@ impl ObservabilityPipelineGoogleChronicleDestination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn encoding( mut self, value: crate::datadogV2::model::ObservabilityPipelineGoogleChronicleDestinationEncoding, @@ -105,6 +117,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGoogleChronicleDestination { M: MapAccess<'a>, { let mut auth: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut customer_id: Option = None; let mut encoding: Option = None; let mut id: Option = None; @@ -127,6 +142,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGoogleChronicleDestination { } auth = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "customer_id" => { customer_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); @@ -183,6 +212,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGoogleChronicleDestination { let content = ObservabilityPipelineGoogleChronicleDestination { auth, + buffer, customer_id, encoding, id, diff --git a/src/datadogV2/model/model_observability_pipeline_google_cloud_storage_destination.rs b/src/datadogV2/model/model_observability_pipeline_google_cloud_storage_destination.rs index 49e9625d0..81997295c 100644 --- a/src/datadogV2/model/model_observability_pipeline_google_cloud_storage_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_google_cloud_storage_destination.rs @@ -21,6 +21,9 @@ pub struct ObservabilityPipelineGoogleCloudStorageDestination { /// Name of the GCS bucket. #[serde(rename = "bucket")] pub bucket: String, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Unique identifier for the destination component. #[serde(rename = "id")] pub id: String, @@ -59,6 +62,7 @@ impl ObservabilityPipelineGoogleCloudStorageDestination { acl: None, auth: None, bucket, + buffer: None, id, inputs, key_prefix: None, @@ -83,6 +87,14 @@ impl ObservabilityPipelineGoogleCloudStorageDestination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn key_prefix(mut self, value: String) -> Self { self.key_prefix = Some(value); self @@ -127,6 +139,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGoogleCloudStorageDestinatio > = None; let mut auth: Option = None; let mut bucket: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut id: Option = None; let mut inputs: Option> = None; let mut key_prefix: Option = None; @@ -168,6 +183,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGoogleCloudStorageDestinatio "bucket" => { bucket = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -227,6 +256,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGoogleCloudStorageDestinatio acl, auth, bucket, + buffer, id, inputs, key_prefix, diff --git a/src/datadogV2/model/model_observability_pipeline_google_pub_sub_destination.rs b/src/datadogV2/model/model_observability_pipeline_google_pub_sub_destination.rs index df160077c..f1ccdf88b 100644 --- a/src/datadogV2/model/model_observability_pipeline_google_pub_sub_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_google_pub_sub_destination.rs @@ -14,6 +14,9 @@ pub struct ObservabilityPipelineGooglePubSubDestination { /// GCP credentials used to authenticate with Google Cloud Storage. #[serde(rename = "auth")] pub auth: Option, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Encoding format for log events. #[serde(rename = "encoding")] pub encoding: crate::datadogV2::model::ObservabilityPipelineGooglePubSubDestinationEncoding, @@ -53,6 +56,7 @@ impl ObservabilityPipelineGooglePubSubDestination { ) -> ObservabilityPipelineGooglePubSubDestination { ObservabilityPipelineGooglePubSubDestination { auth: None, + buffer: None, encoding, id, inputs, @@ -70,6 +74,14 @@ impl ObservabilityPipelineGooglePubSubDestination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn tls(mut self, value: crate::datadogV2::model::ObservabilityPipelineTls) -> Self { self.tls = Some(value); self @@ -102,6 +114,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGooglePubSubDestination { M: MapAccess<'a>, { let mut auth: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut encoding: Option< crate::datadogV2::model::ObservabilityPipelineGooglePubSubDestinationEncoding, > = None; @@ -127,6 +142,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGooglePubSubDestination { } auth = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "encoding" => { encoding = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _encoding) = encoding { @@ -183,6 +212,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineGooglePubSubDestination { let content = ObservabilityPipelineGooglePubSubDestination { auth, + buffer, encoding, id, inputs, diff --git a/src/datadogV2/model/model_observability_pipeline_memory_buffer_options.rs b/src/datadogV2/model/model_observability_pipeline_memory_buffer_options.rs new file mode 100644 index 000000000..1d535d4d2 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_memory_buffer_options.rs @@ -0,0 +1,135 @@ +// 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}; + +/// Options for configuring a memory buffer by byte size. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct ObservabilityPipelineMemoryBufferOptions { + /// Maximum size of the disk buffer. + #[serde(rename = "max_size")] + pub max_size: Option, + /// The type of the buffer that will be configured, a memory buffer. + #[serde(rename = "type")] + pub type_: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl ObservabilityPipelineMemoryBufferOptions { + pub fn new() -> ObservabilityPipelineMemoryBufferOptions { + ObservabilityPipelineMemoryBufferOptions { + max_size: None, + type_: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn max_size(mut self, value: i64) -> Self { + self.max_size = Some(value); + self + } + + pub fn type_( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptionsMemoryType, + ) -> Self { + self.type_ = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for ObservabilityPipelineMemoryBufferOptions { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineMemoryBufferOptions { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct ObservabilityPipelineMemoryBufferOptionsVisitor; + impl<'a> Visitor<'a> for ObservabilityPipelineMemoryBufferOptionsVisitor { + type Value = ObservabilityPipelineMemoryBufferOptions; + + 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 max_size: Option = None; + let mut type_: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptionsMemoryType, + > = 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() { + "max_size" => { + if v.is_null() { + continue; + } + max_size = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + if v.is_null() { + continue; + } + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::ObservabilityPipelineBufferOptionsMemoryType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = ObservabilityPipelineMemoryBufferOptions { + max_size, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(ObservabilityPipelineMemoryBufferOptionsVisitor) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_memory_buffer_size_options.rs b/src/datadogV2/model/model_observability_pipeline_memory_buffer_size_options.rs new file mode 100644 index 000000000..cc719cc36 --- /dev/null +++ b/src/datadogV2/model/model_observability_pipeline_memory_buffer_size_options.rs @@ -0,0 +1,135 @@ +// 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}; + +/// Options for configuring a memory buffer by queue length. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct ObservabilityPipelineMemoryBufferSizeOptions { + /// Maximum events for the memory buffer. + #[serde(rename = "max_events")] + pub max_events: Option, + /// The type of the buffer that will be configured, a memory buffer. + #[serde(rename = "type")] + pub type_: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl ObservabilityPipelineMemoryBufferSizeOptions { + pub fn new() -> ObservabilityPipelineMemoryBufferSizeOptions { + ObservabilityPipelineMemoryBufferSizeOptions { + max_events: None, + type_: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn max_events(mut self, value: i64) -> Self { + self.max_events = Some(value); + self + } + + pub fn type_( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptionsMemoryType, + ) -> Self { + self.type_ = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for ObservabilityPipelineMemoryBufferSizeOptions { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for ObservabilityPipelineMemoryBufferSizeOptions { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct ObservabilityPipelineMemoryBufferSizeOptionsVisitor; + impl<'a> Visitor<'a> for ObservabilityPipelineMemoryBufferSizeOptionsVisitor { + type Value = ObservabilityPipelineMemoryBufferSizeOptions; + + 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 max_events: Option = None; + let mut type_: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptionsMemoryType, + > = 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() { + "max_events" => { + if v.is_null() { + continue; + } + max_events = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + if v.is_null() { + continue; + } + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::ObservabilityPipelineBufferOptionsMemoryType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = ObservabilityPipelineMemoryBufferSizeOptions { + max_events, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(ObservabilityPipelineMemoryBufferSizeOptionsVisitor) + } +} diff --git a/src/datadogV2/model/model_observability_pipeline_new_relic_destination.rs b/src/datadogV2/model/model_observability_pipeline_new_relic_destination.rs index 954143c2e..3dfe294ce 100644 --- a/src/datadogV2/model/model_observability_pipeline_new_relic_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_new_relic_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineNewRelicDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The unique identifier for this component. #[serde(rename = "id")] pub id: String, @@ -38,6 +41,7 @@ impl ObservabilityPipelineNewRelicDestination { type_: crate::datadogV2::model::ObservabilityPipelineNewRelicDestinationType, ) -> ObservabilityPipelineNewRelicDestination { ObservabilityPipelineNewRelicDestination { + buffer: None, id, inputs, region, @@ -47,6 +51,14 @@ impl ObservabilityPipelineNewRelicDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -73,6 +85,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineNewRelicDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut id: Option = None; let mut inputs: Option> = None; let mut region: Option< @@ -89,6 +104,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineNewRelicDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -130,6 +159,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineNewRelicDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineNewRelicDestination { + buffer, id, inputs, region, diff --git a/src/datadogV2/model/model_observability_pipeline_open_search_destination.rs b/src/datadogV2/model/model_observability_pipeline_open_search_destination.rs index 063cc4913..bda3562c7 100644 --- a/src/datadogV2/model/model_observability_pipeline_open_search_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_open_search_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineOpenSearchDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The index to write logs to. #[serde(rename = "bulk_index")] pub bulk_index: Option, @@ -37,6 +40,7 @@ impl ObservabilityPipelineOpenSearchDestination { type_: crate::datadogV2::model::ObservabilityPipelineOpenSearchDestinationType, ) -> ObservabilityPipelineOpenSearchDestination { ObservabilityPipelineOpenSearchDestination { + buffer: None, bulk_index: None, id, inputs, @@ -46,6 +50,14 @@ impl ObservabilityPipelineOpenSearchDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn bulk_index(mut self, value: String) -> Self { self.bulk_index = Some(value); self @@ -77,6 +89,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOpenSearchDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut bulk_index: Option = None; let mut id: Option = None; let mut inputs: Option> = None; @@ -91,6 +106,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOpenSearchDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "bulk_index" => { if v.is_null() { continue; @@ -126,6 +155,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineOpenSearchDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineOpenSearchDestination { + buffer, bulk_index, id, inputs, diff --git a/src/datadogV2/model/model_observability_pipeline_rsyslog_destination.rs b/src/datadogV2/model/model_observability_pipeline_rsyslog_destination.rs index 639b30eb5..f41b60e80 100644 --- a/src/datadogV2/model/model_observability_pipeline_rsyslog_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_rsyslog_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineRsyslogDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The unique identifier for this component. #[serde(rename = "id")] pub id: String, @@ -40,6 +43,7 @@ impl ObservabilityPipelineRsyslogDestination { type_: crate::datadogV2::model::ObservabilityPipelineRsyslogDestinationType, ) -> ObservabilityPipelineRsyslogDestination { ObservabilityPipelineRsyslogDestination { + buffer: None, id, inputs, keepalive: None, @@ -50,6 +54,14 @@ impl ObservabilityPipelineRsyslogDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn keepalive(mut self, value: i64) -> Self { self.keepalive = Some(value); self @@ -86,6 +98,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRsyslogDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut id: Option = None; let mut inputs: Option> = None; let mut keepalive: Option = None; @@ -101,6 +116,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRsyslogDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -142,6 +171,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineRsyslogDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineRsyslogDestination { + buffer, id, inputs, keepalive, diff --git a/src/datadogV2/model/model_observability_pipeline_sentinel_one_destination.rs b/src/datadogV2/model/model_observability_pipeline_sentinel_one_destination.rs index fdc03a0f9..662433672 100644 --- a/src/datadogV2/model/model_observability_pipeline_sentinel_one_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_sentinel_one_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSentinelOneDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The unique identifier for this component. #[serde(rename = "id")] pub id: String, @@ -38,6 +41,7 @@ impl ObservabilityPipelineSentinelOneDestination { type_: crate::datadogV2::model::ObservabilityPipelineSentinelOneDestinationType, ) -> ObservabilityPipelineSentinelOneDestination { ObservabilityPipelineSentinelOneDestination { + buffer: None, id, inputs, region, @@ -47,6 +51,14 @@ impl ObservabilityPipelineSentinelOneDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -73,6 +85,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSentinelOneDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut id: Option = None; let mut inputs: Option> = None; let mut region: Option< @@ -89,6 +104,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSentinelOneDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -130,6 +159,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSentinelOneDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSentinelOneDestination { + buffer, id, inputs, region, diff --git a/src/datadogV2/model/model_observability_pipeline_socket_destination.rs b/src/datadogV2/model/model_observability_pipeline_socket_destination.rs index 87e1d6b93..1bb97d8fc 100644 --- a/src/datadogV2/model/model_observability_pipeline_socket_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_socket_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSocketDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Encoding format for log events. #[serde(rename = "encoding")] pub encoding: crate::datadogV2::model::ObservabilityPipelineSocketDestinationEncoding, @@ -49,6 +52,7 @@ impl ObservabilityPipelineSocketDestination { type_: crate::datadogV2::model::ObservabilityPipelineSocketDestinationType, ) -> ObservabilityPipelineSocketDestination { ObservabilityPipelineSocketDestination { + buffer: None, encoding, framing, id, @@ -61,6 +65,14 @@ impl ObservabilityPipelineSocketDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn tls(mut self, value: crate::datadogV2::model::ObservabilityPipelineTls) -> Self { self.tls = Some(value); self @@ -92,6 +104,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSocketDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut encoding: Option< crate::datadogV2::model::ObservabilityPipelineSocketDestinationEncoding, > = None; @@ -115,6 +130,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSocketDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "encoding" => { encoding = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _encoding) = encoding { @@ -186,6 +215,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSocketDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSocketDestination { + buffer, encoding, framing, id, diff --git a/src/datadogV2/model/model_observability_pipeline_splunk_hec_destination.rs b/src/datadogV2/model/model_observability_pipeline_splunk_hec_destination.rs index 0571bee3b..c2ecc7e10 100644 --- a/src/datadogV2/model/model_observability_pipeline_splunk_hec_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_splunk_hec_destination.rs @@ -15,6 +15,9 @@ pub struct ObservabilityPipelineSplunkHecDestination { /// If `false`, Splunk assigns the time the event was received. #[serde(rename = "auto_extract_timestamp")] pub auto_extract_timestamp: Option, + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// Encoding format for log events. #[serde(rename = "encoding")] pub encoding: @@ -49,6 +52,7 @@ impl ObservabilityPipelineSplunkHecDestination { ) -> ObservabilityPipelineSplunkHecDestination { ObservabilityPipelineSplunkHecDestination { auto_extract_timestamp: None, + buffer: None, encoding: None, id, index: None, @@ -65,6 +69,14 @@ impl ObservabilityPipelineSplunkHecDestination { self } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn encoding( mut self, value: crate::datadogV2::model::ObservabilityPipelineSplunkHecDestinationEncoding, @@ -110,6 +122,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSplunkHecDestination { M: MapAccess<'a>, { let mut auto_extract_timestamp: Option = None; + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut encoding: Option< crate::datadogV2::model::ObservabilityPipelineSplunkHecDestinationEncoding, > = None; @@ -135,6 +150,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSplunkHecDestination { auto_extract_timestamp = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "encoding" => { if v.is_null() { continue; @@ -191,6 +220,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSplunkHecDestination { let content = ObservabilityPipelineSplunkHecDestination { auto_extract_timestamp, + buffer, encoding, id, index, diff --git a/src/datadogV2/model/model_observability_pipeline_sumo_logic_destination.rs b/src/datadogV2/model/model_observability_pipeline_sumo_logic_destination.rs index 2a6758c9d..4712e8631 100644 --- a/src/datadogV2/model/model_observability_pipeline_sumo_logic_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_sumo_logic_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSumoLogicDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The output encoding format. #[serde(rename = "encoding")] pub encoding: Option, @@ -49,6 +52,7 @@ impl ObservabilityPipelineSumoLogicDestination { type_: crate::datadogV2::model::ObservabilityPipelineSumoLogicDestinationType, ) -> ObservabilityPipelineSumoLogicDestination { ObservabilityPipelineSumoLogicDestination { + buffer: None, encoding: None, header_custom_fields: None, header_host_name: None, @@ -62,6 +66,14 @@ impl ObservabilityPipelineSumoLogicDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn encoding( mut self, value: crate::datadogV2::model::ObservabilityPipelineSumoLogicDestinationEncoding, @@ -119,6 +131,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSumoLogicDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut encoding: Option< crate::datadogV2::model::ObservabilityPipelineSumoLogicDestinationEncoding, > = None; @@ -139,6 +154,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSumoLogicDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "encoding" => { if v.is_null() { continue; @@ -210,6 +239,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSumoLogicDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSumoLogicDestination { + buffer, encoding, header_custom_fields, header_host_name, diff --git a/src/datadogV2/model/model_observability_pipeline_syslog_ng_destination.rs b/src/datadogV2/model/model_observability_pipeline_syslog_ng_destination.rs index 21eb01357..337500493 100644 --- a/src/datadogV2/model/model_observability_pipeline_syslog_ng_destination.rs +++ b/src/datadogV2/model/model_observability_pipeline_syslog_ng_destination.rs @@ -11,6 +11,9 @@ use std::fmt::{self, Formatter}; #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] pub struct ObservabilityPipelineSyslogNgDestination { + /// Configuration for buffer settings on destination components. + #[serde(rename = "buffer")] + pub buffer: Option, /// The unique identifier for this component. #[serde(rename = "id")] pub id: String, @@ -40,6 +43,7 @@ impl ObservabilityPipelineSyslogNgDestination { type_: crate::datadogV2::model::ObservabilityPipelineSyslogNgDestinationType, ) -> ObservabilityPipelineSyslogNgDestination { ObservabilityPipelineSyslogNgDestination { + buffer: None, id, inputs, keepalive: None, @@ -50,6 +54,14 @@ impl ObservabilityPipelineSyslogNgDestination { } } + pub fn buffer( + mut self, + value: crate::datadogV2::model::ObservabilityPipelineBufferOptions, + ) -> Self { + self.buffer = Some(value); + self + } + pub fn keepalive(mut self, value: i64) -> Self { self.keepalive = Some(value); self @@ -86,6 +98,9 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSyslogNgDestination { where M: MapAccess<'a>, { + let mut buffer: Option< + crate::datadogV2::model::ObservabilityPipelineBufferOptions, + > = None; let mut id: Option = None; let mut inputs: Option> = None; let mut keepalive: Option = None; @@ -101,6 +116,20 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSyslogNgDestination { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { + "buffer" => { + if v.is_null() { + continue; + } + buffer = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _buffer) = buffer { + match _buffer { + crate::datadogV2::model::ObservabilityPipelineBufferOptions::UnparsedObject(_buffer) => { + _unparsed = true; + }, + _ => {} + } + } + } "id" => { id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } @@ -142,6 +171,7 @@ impl<'de> Deserialize<'de> for ObservabilityPipelineSyslogNgDestination { let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; let content = ObservabilityPipelineSyslogNgDestination { + buffer, id, inputs, keepalive, 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 73133f1c7..b835c39be 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-12-18T16:15:15.575Z \ No newline at end of file +2026-01-06T13:50:00.603Z \ 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 a39d35459..70c3277d4 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 @@ -32,7 +32,7 @@ "message": "Bad Request" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:15 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:00 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 20165353d..f99b046bd 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-12-18T16:15:16.062Z \ No newline at end of file +2026-01-06T13:50:01.032Z \ 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 57c40df14..145f4b143 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 @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"bd8d693c-dc2c-11f0-bf69-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", + "string": "{\"data\":{\"id\":\"98cbafb2-eb06-11f0-b183-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": "Thu, 18 Dec 2025 16:15:16 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:01 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/bd8d693c-dc2c-11f0-bf69-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/98cbafb2-eb06-11f0-b183-da7ad0900002" }, "response": { "body": { @@ -60,7 +60,7 @@ "message": "No Content" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:16 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:01 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 85deda919..1a1e0e6af 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-12-18T16:15:17.165Z \ No newline at end of file +2026-01-06T13:50:02.108Z \ 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 84c5d3fec..638be5ae7 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": "Thu, 18 Dec 2025 16:15:17 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:02 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 201ee9bda..b0c0cd045 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-12-18T16:15:17.716Z \ No newline at end of file +2026-01-06T13:50:02.599Z \ 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 b81de9992..c5842e78a 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 @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"be89fea4-dc2c-11f0-bdea-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"99bc2ab4-eb06-11f0-a7ff-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"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": "Thu, 18 Dec 2025 16:15:17 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:02 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/be89fea4-dc2c-11f0-bdea-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/99bc2ab4-eb06-11f0-a7ff-da7ad0900002" }, "response": { "body": { @@ -60,7 +60,7 @@ "message": "No Content" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:17 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:02 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/be89fea4-dc2c-11f0-bdea-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/99bc2ab4-eb06-11f0-a7ff-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "Not Found" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:17 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:02 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 2da6d0e5c..8a7dea973 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-12-18T16:15:20.018Z \ No newline at end of file +2026-01-06T13:50:04.791Z \ 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 79c5b4062..b321f221d 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 @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"bfe664a4-dc2c-11f0-bdec-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"9b06af3e-eb06-11f0-a801-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"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": "Thu, 18 Dec 2025 16:15:20 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:04 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/bfe664a4-dc2c-11f0-bdec-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/9b06af3e-eb06-11f0-a801-da7ad0900002" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"bfe664a4-dc2c-11f0-bdec-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"9b06af3e-eb06-11f0-a801-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"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": "Thu, 18 Dec 2025 16:15:20 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:04 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/bfe664a4-dc2c-11f0-bdec-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/9b06af3e-eb06-11f0-a801-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "No Content" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:20 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:04 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 a1ae2640d..e5c3681b9 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-12-18T16:15:22.038Z \ No newline at end of file +2026-01-06T13:50:06.623Z \ 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 76ad4c296..5435625b6 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": "Thu, 18 Dec 2025 16:15:22 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:06 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 fb745af4c..1e45abc56 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-12-18T16:15:22.507Z \ No newline at end of file +2026-01-06T13:50:07.036Z \ 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 1f1634300..c0e3fb7bd 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 @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"c162e83e-dc2c-11f0-bf6b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"9c5e6732-eb06-11f0-a803-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"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": "Thu, 18 Dec 2025 16:15:22 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:07 GMT" }, { "request": { @@ -47,7 +47,7 @@ }, "response": { "body": { - "string": "{\"data\":[{\"id\":\"c162e83e-dc2c-11f0-bf6b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}],\"meta\":{\"totalCount\":1}}\n", + "string": "{\"data\":[{\"id\":\"4bf478ba-dc68-11f0-87e9-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\"}]}}},{\"id\":\"a78e416a-de66-11f0-a039-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\":\"a84fd58c-de66-11f0-a03b-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"amazon_s3-source-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"s3-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"auth\":{\"assume_role\":\"arn:aws:iam::123456789012:role/test-role\",\"external_id\":\"external-test-id\",\"session_name\":\"session-test\"},\"id\":\"s3-source-1\",\"region\":\"us-east-1\",\"tls\":{\"ca_file\":\"/etc/ssl/certs/s3.ca\",\"crt_file\":\"/etc/ssl/certs/s3.crt\",\"key_file\":\"/etc/ssl/private/s3.key\"},\"type\":\"amazon_s3\"}]}}},{\"id\":\"a42e22e0-df49-11f0-81d5-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"dedupe pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"dedupe-group-2\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"dedupe-group-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"processors\":[{\"enabled\":true,\"fields\":[\"log.message\",\"log.tags\"],\"id\":\"dedupe-match\",\"include\":\"*\",\"mode\":\"match\",\"type\":\"dedupe\"}]},{\"enabled\":true,\"id\":\"dedupe-group-2\",\"include\":\"*\",\"inputs\":[\"dedupe-group-1\"],\"processors\":[{\"enabled\":true,\"fields\":[\"log.source\",\"log.context\"],\"id\":\"dedupe-ignore\",\"include\":\"*\",\"mode\":\"ignore\",\"type\":\"dedupe\"}]}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"2cd3c342-e0c2-11f0-9d34-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"add-fields-pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"add-fields-group-1\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"enabled\":true,\"id\":\"add-fields-group-1\",\"include\":\"*\",\"inputs\":[\"source-1\"],\"processors\":[{\"enabled\":true,\"fields\":[{\"name\":\"custom.field\",\"value\":\"hello-world\"},{\"name\":\"env\",\"value\":\"prod\"}],\"id\":\"add-fields-1\",\"include\":\"*\",\"type\":\"add_fields\"}]}],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"20f4849c-e579-11f0-af79-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\":\"15621afe-e669-11f0-bec3-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"dfbeb25a-e6c1-11f0-9bc1-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"923fbdb6-e771-11f0-9388-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"http-client pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"http-source-1\"],\"type\":\"datadog_logs\"}],\"processors\":[],\"sources\":[{\"auth_strategy\":\"basic\",\"decoding\":\"json\",\"id\":\"http-source-1\",\"scrape_interval_secs\":60,\"scrape_timeout_secs\":10,\"tls\":{\"crt_file\":\"/path/to/http.crt\"},\"type\":\"http_client\"}]}}},{\"id\":\"a7b600ce-e771-11f0-939c-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"newrelic pipeline\",\"config\":{\"destinations\":[{\"id\":\"destination-1\",\"inputs\":[\"source-1\"],\"region\":\"us\",\"type\":\"new_relic\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"306bab4c-e904-11f0-aa8a-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\":\"51faefca-e922-11f0-a260-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"8d025dea-ea96-11f0-8a79-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"crowdstrike-next-gen-siem-destination-pipeline-basic\",\"config\":{\"destinations\":[{\"encoding\":\"raw_message\",\"id\":\"crowdstrike-dest-basic-1\",\"inputs\":[\"source-1\"],\"type\":\"crowdstrike_next_gen_siem\"}],\"processors\":[],\"sources\":[{\"id\":\"source-1\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"ed4d493e-eabf-11f0-852d-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}},{\"id\":\"9c5e6732-eb06-11f0-a803-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}],\"meta\":{\"totalCount\":15}}\n", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:22 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:07 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/c162e83e-dc2c-11f0-bf6b-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/9c5e6732-eb06-11f0-a803-da7ad0900002" }, "response": { "body": { @@ -88,7 +88,7 @@ "message": "No Content" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:22 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:07 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 92a0e9377..ef250224c 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-12-18T16:15:24.455Z \ No newline at end of file +2026-01-06T13:50:09.046Z \ 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 95e0b1141..c6d8f62d5 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 @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"c28a5ad0-dc2c-11f0-bdee-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"9d8eebe0-eb06-11f0-b185-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"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": "Thu, 18 Dec 2025 16:15:24 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:09 GMT" }, { "request": { @@ -49,7 +49,7 @@ ] }, "method": "put", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/c28a5ad0-dc2c-11f0-bdee-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/9d8eebe0-eb06-11f0-b185-da7ad0900002" }, "response": { "body": { @@ -66,7 +66,7 @@ "message": "Bad Request" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:24 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:09 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/c28a5ad0-dc2c-11f0-bdee-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/9d8eebe0-eb06-11f0-b185-da7ad0900002" }, "response": { "body": { @@ -94,7 +94,7 @@ "message": "No Content" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:24 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:09 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 b083fd34a..cea63a877 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-12-18T16:15:26.411Z \ No newline at end of file +2026-01-06T13:50:10.811Z \ 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 0b08eeaea..2207a7b15 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 @@ -32,7 +32,7 @@ "message": "Not Found" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:26 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:10 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 b9cbd5fca..e9d2e85c6 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-12-18T16:15:26.929Z \ No newline at end of file +2026-01-06T13:50:11.272Z \ 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 dea6a958e..a5fd71836 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 @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"c40401e0-dc2c-11f0-bf6d-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"enabled\":true,\"id\":\"filter-processor\",\"include\":\"status:error\",\"type\":\"filter\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "string": "{\"data\":{\"id\":\"9ee260d0-eb06-11f0-b187-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Main Observability Pipeline\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processors\":[{\"display_name\":\"My Processor Group\",\"enabled\":true,\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"display_name\":\"My Filter Processor\",\"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": "Thu, 18 Dec 2025 16:15:26 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:11 GMT" }, { "request": { @@ -49,11 +49,11 @@ ] }, "method": "put", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/c40401e0-dc2c-11f0-bf6d-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/9ee260d0-eb06-11f0-b187-da7ad0900002" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"c40401e0-dc2c-11f0-bf6d-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", + "string": "{\"data\":{\"id\":\"9ee260d0-eb06-11f0-b187-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": "Thu, 18 Dec 2025 16:15:26 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:11 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/c40401e0-dc2c-11f0-bf6d-da7ad0900002" + "uri": "https://api.datadoghq.com/api/v2/remote_config/products/obs_pipelines/pipelines/9ee260d0-eb06-11f0-b187-da7ad0900002" }, "response": { "body": { @@ -94,7 +94,7 @@ "message": "No Content" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:26 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:11 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 745856e49..78ec48334 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-12-18T16:15:29.179Z \ No newline at end of file +2026-01-06T13:50:14.036Z \ 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 a22e4d6e1..f5f8bb9ea 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 @@ -32,7 +32,7 @@ "message": "Bad Request" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:29 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:14 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 ecfcc5416..8b15ab762 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-12-18T16:15:29.647Z \ No newline at end of file +2026-01-06T13:50:14.439Z \ 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 f618a316d..d379b9853 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 @@ -32,7 +32,7 @@ "message": "OK" } }, - "recorded_at": "Thu, 18 Dec 2025 16:15:29 GMT" + "recorded_at": "Tue, 06 Jan 2026 13:50:14 GMT" } ], "recorded_with": "VCR 6.0.0"