From 5f82744397a0cd44d5eb1659b82d08421056d4a8 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Mon, 16 Feb 2026 11:13:06 +0000 Subject: [PATCH] Regenerate client from commit 65554d7 of spec repo --- .generator/schemas/v2/openapi.yaml | 7 +- LICENSE-3rdparty.csv | 2 +- ...2_deployment-gates_CreateDeploymentRule.rs | 5 +- ...2_deployment-gates_UpdateDeploymentRule.rs | 5 +- ..._deployment_rule_params_data_attributes.rs | 10 +- ...eployment_rule_response_data_attributes.rs | 10 +- .../model/model_deployment_rules_options.rs | 95 +++++++++++++------ ..._deployment_rule_params_data_attributes.rs | 10 +- .../features/v2/deployment_gates.feature | 6 +- 9 files changed, 81 insertions(+), 69 deletions(-) diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index b8661d93f..14b2d035b 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -19700,11 +19700,12 @@ components: - id type: object DeploymentRulesOptions: - description: Options for deployment rule response representing either faulty - deployment detection or monitor options. - oneOf: + anyOf: - $ref: '#/components/schemas/DeploymentRuleOptionsFaultyDeploymentDetection' - $ref: '#/components/schemas/DeploymentRuleOptionsMonitor' + description: Options for deployment rule response representing either faulty + deployment detection or monitor options. The actual type is determined by + the parent's 'type' field. DetachCaseRequest: description: Request for detaching security findings from their case. properties: diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 0a6b8b040..6bcb43423 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -89,7 +89,7 @@ num-traits,https://github.com/rust-num/num-traits,MIT OR Apache-2.0,The Rust Pro once_cell,https://github.com/matklad/once_cell,MIT OR Apache-2.0,Aleksey Kladov openssl,https://github.com/rust-openssl/rust-openssl,Apache-2.0,Steven Fackler openssl-macros,https://github.com/sfackler/rust-openssl,MIT OR Apache-2.0,The openssl-macros Authors -openssl-probe,https://github.com/alexcrichton/openssl-probe,MIT OR Apache-2.0,Alex Crichton +openssl-probe,https://github.com/rustls/openssl-probe,MIT OR Apache-2.0,Alex Crichton openssl-sys,https://github.com/rust-openssl/rust-openssl,MIT,"Alex Crichton , Steven Fackler " parking_lot,https://github.com/Amanieu/parking_lot,Apache-2.0 OR MIT,Amanieu d'Antras parking_lot_core,https://github.com/Amanieu/parking_lot,Apache-2.0 OR MIT,Amanieu d'Antras diff --git a/examples/v2_deployment-gates_CreateDeploymentRule.rs b/examples/v2_deployment-gates_CreateDeploymentRule.rs index 1c85310c7..7977caada 100644 --- a/examples/v2_deployment-gates_CreateDeploymentRule.rs +++ b/examples/v2_deployment-gates_CreateDeploymentRule.rs @@ -5,7 +5,6 @@ use datadog_api_client::datadogV2::model::CreateDeploymentRuleParams; use datadog_api_client::datadogV2::model::CreateDeploymentRuleParamsData; use datadog_api_client::datadogV2::model::CreateDeploymentRuleParamsDataAttributes; use datadog_api_client::datadogV2::model::DeploymentRuleDataType; -use datadog_api_client::datadogV2::model::DeploymentRuleOptionsFaultyDeploymentDetection; use datadog_api_client::datadogV2::model::DeploymentRulesOptions; #[tokio::main] @@ -15,9 +14,7 @@ async fn main() { let body = CreateDeploymentRuleParams::new().data(CreateDeploymentRuleParamsData::new( CreateDeploymentRuleParamsDataAttributes::new( "My deployment rule".to_string(), - DeploymentRulesOptions::DeploymentRuleOptionsFaultyDeploymentDetection(Box::new( - DeploymentRuleOptionsFaultyDeploymentDetection::new().excluded_resources(vec![]), - )), + DeploymentRulesOptions::new(), "faulty_deployment_detection".to_string(), ) .dry_run(false), diff --git a/examples/v2_deployment-gates_UpdateDeploymentRule.rs b/examples/v2_deployment-gates_UpdateDeploymentRule.rs index 2c9bfa03f..867820eb4 100644 --- a/examples/v2_deployment-gates_UpdateDeploymentRule.rs +++ b/examples/v2_deployment-gates_UpdateDeploymentRule.rs @@ -2,7 +2,6 @@ use datadog_api_client::datadog; use datadog_api_client::datadogV2::api_deployment_gates::DeploymentGatesAPI; use datadog_api_client::datadogV2::model::DeploymentRuleDataType; -use datadog_api_client::datadogV2::model::DeploymentRuleOptionsFaultyDeploymentDetection; use datadog_api_client::datadogV2::model::DeploymentRulesOptions; use datadog_api_client::datadogV2::model::UpdateDeploymentRuleParams; use datadog_api_client::datadogV2::model::UpdateDeploymentRuleParamsData; @@ -19,9 +18,7 @@ async fn main() { UpdateDeploymentRuleParamsDataAttributes::new( false, "Updated deployment rule".to_string(), - DeploymentRulesOptions::DeploymentRuleOptionsFaultyDeploymentDetection(Box::new( - DeploymentRuleOptionsFaultyDeploymentDetection::new().excluded_resources(vec![]), - )), + DeploymentRulesOptions::new(), ), DeploymentRuleDataType::DEPLOYMENT_RULE, )); diff --git a/src/datadogV2/model/model_create_deployment_rule_params_data_attributes.rs b/src/datadogV2/model/model_create_deployment_rule_params_data_attributes.rs index 35d244004..8af434d3b 100644 --- a/src/datadogV2/model/model_create_deployment_rule_params_data_attributes.rs +++ b/src/datadogV2/model/model_create_deployment_rule_params_data_attributes.rs @@ -17,7 +17,7 @@ pub struct CreateDeploymentRuleParamsDataAttributes { /// The name of the deployment rule. #[serde(rename = "name")] pub name: String, - /// Options for deployment rule response representing either faulty deployment detection or monitor options. + /// Options for deployment rule response representing either faulty deployment detection or monitor options. The actual type is determined by the parent's 'type' field. #[serde(rename = "options")] pub options: crate::datadogV2::model::DeploymentRulesOptions, /// The type of the deployment rule (faulty_deployment_detection or monitor). @@ -100,14 +100,6 @@ impl<'de> Deserialize<'de> for CreateDeploymentRuleParamsDataAttributes { } "options" => { options = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _options) = options { - match _options { - crate::datadogV2::model::DeploymentRulesOptions::UnparsedObject(_options) => { - _unparsed = true; - }, - _ => {} - } - } } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); diff --git a/src/datadogV2/model/model_deployment_rule_response_data_attributes.rs b/src/datadogV2/model/model_deployment_rule_response_data_attributes.rs index ac4e07140..d95d32e1b 100644 --- a/src/datadogV2/model/model_deployment_rule_response_data_attributes.rs +++ b/src/datadogV2/model/model_deployment_rule_response_data_attributes.rs @@ -26,7 +26,7 @@ pub struct DeploymentRuleResponseDataAttributes { /// The name of the deployment rule. #[serde(rename = "name")] pub name: String, - /// Options for deployment rule response representing either faulty deployment detection or monitor options. + /// Options for deployment rule response representing either faulty deployment detection or monitor options. The actual type is determined by the parent's 'type' field. #[serde(rename = "options")] pub options: crate::datadogV2::model::DeploymentRulesOptions, /// The type of the deployment rule. @@ -149,14 +149,6 @@ impl<'de> Deserialize<'de> for DeploymentRuleResponseDataAttributes { } "options" => { options = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _options) = options { - match _options { - crate::datadogV2::model::DeploymentRulesOptions::UnparsedObject(_options) => { - _unparsed = true; - }, - _ => {} - } - } } "type" => { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); diff --git a/src/datadogV2/model/model_deployment_rules_options.rs b/src/datadogV2/model/model_deployment_rules_options.rs index 30b1bf64d..fa8c6ecd9 100644 --- a/src/datadogV2/model/model_deployment_rules_options.rs +++ b/src/datadogV2/model/model_deployment_rules_options.rs @@ -1,18 +1,44 @@ // 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 deployment rule response representing either faulty deployment detection or monitor options. +/// Options for deployment rule response representing either faulty deployment detection or monitor options. The actual type is determined by the parent's 'type' field. #[non_exhaustive] +#[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -#[serde(untagged)] -pub enum DeploymentRulesOptions { - DeploymentRuleOptionsFaultyDeploymentDetection( - Box, - ), - DeploymentRuleOptionsMonitor(Box), - UnparsedObject(crate::datadog::UnparsedObject), +pub struct DeploymentRulesOptions { + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl DeploymentRulesOptions { + pub fn new() -> DeploymentRulesOptions { + DeploymentRulesOptions { + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for DeploymentRulesOptions { + fn default() -> Self { + Self::new() + } } impl<'de> Deserialize<'de> for DeploymentRulesOptions { @@ -20,28 +46,43 @@ impl<'de> Deserialize<'de> for DeploymentRulesOptions { 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( - DeploymentRulesOptions::DeploymentRuleOptionsFaultyDeploymentDetection(_v), - ); + struct DeploymentRulesOptionsVisitor; + impl<'a> Visitor<'a> for DeploymentRulesOptionsVisitor { + type Value = DeploymentRulesOptions; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") } - } - if let Ok(_v) = serde_json::from_value::< - Box, - >(value.clone()) - { - if !_v._unparsed { - return Ok(DeploymentRulesOptions::DeploymentRuleOptionsMonitor(_v)); + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + 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() { + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = DeploymentRulesOptions { + additional_properties, + _unparsed, + }; + + Ok(content) } } - return Ok(DeploymentRulesOptions::UnparsedObject( - crate::datadog::UnparsedObject { value }, - )); + deserializer.deserialize_any(DeploymentRulesOptionsVisitor) } } diff --git a/src/datadogV2/model/model_update_deployment_rule_params_data_attributes.rs b/src/datadogV2/model/model_update_deployment_rule_params_data_attributes.rs index 3163282e4..6a047caec 100644 --- a/src/datadogV2/model/model_update_deployment_rule_params_data_attributes.rs +++ b/src/datadogV2/model/model_update_deployment_rule_params_data_attributes.rs @@ -17,7 +17,7 @@ pub struct UpdateDeploymentRuleParamsDataAttributes { /// The name of the deployment rule. #[serde(rename = "name")] pub name: String, - /// Options for deployment rule response representing either faulty deployment detection or monitor options. + /// Options for deployment rule response representing either faulty deployment detection or monitor options. The actual type is determined by the parent's 'type' field. #[serde(rename = "options")] pub options: crate::datadogV2::model::DeploymentRulesOptions, #[serde(flatten)] @@ -87,14 +87,6 @@ impl<'de> Deserialize<'de> for UpdateDeploymentRuleParamsDataAttributes { } "options" => { options = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _options) = options { - match _options { - crate::datadogV2::model::DeploymentRulesOptions::UnparsedObject(_options) => { - _unparsed = true; - }, - _ => {} - } - } } &_ => { if let Ok(value) = serde_json::from_value(v.clone()) { diff --git a/tests/scenarios/features/v2/deployment_gates.feature b/tests/scenarios/features/v2/deployment_gates.feature index cb0c5a126..7f9dd2ada 100644 --- a/tests/scenarios/features/v2/deployment_gates.feature +++ b/tests/scenarios/features/v2/deployment_gates.feature @@ -49,7 +49,7 @@ Feature: Deployment Gates Given operation "CreateDeploymentRule" enabled And new "CreateDeploymentRule" request And request contains "gate_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"dry_run": false, "name": "My deployment rule", "options": {"duration": 3600, "excluded_resources": ["resource1", "resource2"]}, "type": "faulty_deployment_detection"}, "type": "deployment_rule"}} + And body with value {"data": {"attributes": {"dry_run": false, "name": "My deployment rule", "type": "faulty_deployment_detection"}, "type": "deployment_rule"}} When the request is sent Then the response status is 400 Bad request. @@ -279,7 +279,7 @@ Feature: Deployment Gates And new "UpdateDeploymentRule" request And request contains "gate_id" parameter from "REPLACE.ME" And request contains "id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"dry_run": false, "name": "Updated deployment rule", "options": {"duration": 3600, "excluded_resources": ["resource1", "resource2"]}}, "type": "deployment_rule"}} + And body with value {"data": {"attributes": {"dry_run": false, "name": "Updated deployment rule"}, "type": "deployment_rule"}} When the request is sent Then the response status is 400 Bad request. @@ -289,7 +289,7 @@ Feature: Deployment Gates And new "UpdateDeploymentRule" request And request contains "gate_id" parameter from "REPLACE.ME" And request contains "id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"dry_run": false, "name": "Updated deployment rule", "options": {"duration": 3600, "excluded_resources": ["resource1", "resource2"]}}, "type": "deployment_rule"}} + And body with value {"data": {"attributes": {"dry_run": false, "name": "Updated deployment rule"}, "type": "deployment_rule"}} When the request is sent Then the response status is 404 Deployment rule not found.