datadog_api_client/datadogV2/model/
model_action_connection_integration.rs

1// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2// This product includes software developed at Datadog (https://www.datadoghq.com/).
3// Copyright 2019-Present Datadog, Inc.
4use serde::{Deserialize, Deserializer, Serialize};
5
6/// The definition of `ActionConnectionIntegration` object.
7#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Serialize)]
9#[serde(untagged)]
10pub enum ActionConnectionIntegration {
11    AWSIntegration(Box<crate::datadogV2::model::AWSIntegration>),
12    AnthropicIntegration(Box<crate::datadogV2::model::AnthropicIntegration>),
13    AsanaIntegration(Box<crate::datadogV2::model::AsanaIntegration>),
14    AzureIntegration(Box<crate::datadogV2::model::AzureIntegration>),
15    CircleCIIntegration(Box<crate::datadogV2::model::CircleCIIntegration>),
16    ClickupIntegration(Box<crate::datadogV2::model::ClickupIntegration>),
17    CloudflareIntegration(Box<crate::datadogV2::model::CloudflareIntegration>),
18    ConfigCatIntegration(Box<crate::datadogV2::model::ConfigCatIntegration>),
19    DatadogIntegration(Box<crate::datadogV2::model::DatadogIntegration>),
20    FastlyIntegration(Box<crate::datadogV2::model::FastlyIntegration>),
21    FreshserviceIntegration(Box<crate::datadogV2::model::FreshserviceIntegration>),
22    GCPIntegration(Box<crate::datadogV2::model::GCPIntegration>),
23    GeminiIntegration(Box<crate::datadogV2::model::GeminiIntegration>),
24    GitlabIntegration(Box<crate::datadogV2::model::GitlabIntegration>),
25    GreyNoiseIntegration(Box<crate::datadogV2::model::GreyNoiseIntegration>),
26    HTTPIntegration(Box<crate::datadogV2::model::HTTPIntegration>),
27    LaunchDarklyIntegration(Box<crate::datadogV2::model::LaunchDarklyIntegration>),
28    NotionIntegration(Box<crate::datadogV2::model::NotionIntegration>),
29    OktaIntegration(Box<crate::datadogV2::model::OktaIntegration>),
30    OpenAIIntegration(Box<crate::datadogV2::model::OpenAIIntegration>),
31    ServiceNowIntegration(Box<crate::datadogV2::model::ServiceNowIntegration>),
32    SplitIntegration(Box<crate::datadogV2::model::SplitIntegration>),
33    StatsigIntegration(Box<crate::datadogV2::model::StatsigIntegration>),
34    VirusTotalIntegration(Box<crate::datadogV2::model::VirusTotalIntegration>),
35    UnparsedObject(crate::datadog::UnparsedObject),
36}
37
38impl<'de> Deserialize<'de> for ActionConnectionIntegration {
39    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
40    where
41        D: Deserializer<'de>,
42    {
43        let value: serde_json::Value = Deserialize::deserialize(deserializer)?;
44        if let Ok(_v) =
45            serde_json::from_value::<Box<crate::datadogV2::model::AWSIntegration>>(value.clone())
46        {
47            if !_v._unparsed {
48                return Ok(ActionConnectionIntegration::AWSIntegration(_v));
49            }
50        }
51        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::AnthropicIntegration>>(
52            value.clone(),
53        ) {
54            if !_v._unparsed {
55                return Ok(ActionConnectionIntegration::AnthropicIntegration(_v));
56            }
57        }
58        if let Ok(_v) =
59            serde_json::from_value::<Box<crate::datadogV2::model::AsanaIntegration>>(value.clone())
60        {
61            if !_v._unparsed {
62                return Ok(ActionConnectionIntegration::AsanaIntegration(_v));
63            }
64        }
65        if let Ok(_v) =
66            serde_json::from_value::<Box<crate::datadogV2::model::AzureIntegration>>(value.clone())
67        {
68            if !_v._unparsed {
69                return Ok(ActionConnectionIntegration::AzureIntegration(_v));
70            }
71        }
72        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::CircleCIIntegration>>(
73            value.clone(),
74        ) {
75            if !_v._unparsed {
76                return Ok(ActionConnectionIntegration::CircleCIIntegration(_v));
77            }
78        }
79        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::ClickupIntegration>>(
80            value.clone(),
81        ) {
82            if !_v._unparsed {
83                return Ok(ActionConnectionIntegration::ClickupIntegration(_v));
84            }
85        }
86        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::CloudflareIntegration>>(
87            value.clone(),
88        ) {
89            if !_v._unparsed {
90                return Ok(ActionConnectionIntegration::CloudflareIntegration(_v));
91            }
92        }
93        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::ConfigCatIntegration>>(
94            value.clone(),
95        ) {
96            if !_v._unparsed {
97                return Ok(ActionConnectionIntegration::ConfigCatIntegration(_v));
98            }
99        }
100        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::DatadogIntegration>>(
101            value.clone(),
102        ) {
103            if !_v._unparsed {
104                return Ok(ActionConnectionIntegration::DatadogIntegration(_v));
105            }
106        }
107        if let Ok(_v) =
108            serde_json::from_value::<Box<crate::datadogV2::model::FastlyIntegration>>(value.clone())
109        {
110            if !_v._unparsed {
111                return Ok(ActionConnectionIntegration::FastlyIntegration(_v));
112            }
113        }
114        if let Ok(_v) = serde_json::from_value::<
115            Box<crate::datadogV2::model::FreshserviceIntegration>,
116        >(value.clone())
117        {
118            if !_v._unparsed {
119                return Ok(ActionConnectionIntegration::FreshserviceIntegration(_v));
120            }
121        }
122        if let Ok(_v) =
123            serde_json::from_value::<Box<crate::datadogV2::model::GCPIntegration>>(value.clone())
124        {
125            if !_v._unparsed {
126                return Ok(ActionConnectionIntegration::GCPIntegration(_v));
127            }
128        }
129        if let Ok(_v) =
130            serde_json::from_value::<Box<crate::datadogV2::model::GeminiIntegration>>(value.clone())
131        {
132            if !_v._unparsed {
133                return Ok(ActionConnectionIntegration::GeminiIntegration(_v));
134            }
135        }
136        if let Ok(_v) =
137            serde_json::from_value::<Box<crate::datadogV2::model::GitlabIntegration>>(value.clone())
138        {
139            if !_v._unparsed {
140                return Ok(ActionConnectionIntegration::GitlabIntegration(_v));
141            }
142        }
143        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::GreyNoiseIntegration>>(
144            value.clone(),
145        ) {
146            if !_v._unparsed {
147                return Ok(ActionConnectionIntegration::GreyNoiseIntegration(_v));
148            }
149        }
150        if let Ok(_v) =
151            serde_json::from_value::<Box<crate::datadogV2::model::HTTPIntegration>>(value.clone())
152        {
153            if !_v._unparsed {
154                return Ok(ActionConnectionIntegration::HTTPIntegration(_v));
155            }
156        }
157        if let Ok(_v) = serde_json::from_value::<
158            Box<crate::datadogV2::model::LaunchDarklyIntegration>,
159        >(value.clone())
160        {
161            if !_v._unparsed {
162                return Ok(ActionConnectionIntegration::LaunchDarklyIntegration(_v));
163            }
164        }
165        if let Ok(_v) =
166            serde_json::from_value::<Box<crate::datadogV2::model::NotionIntegration>>(value.clone())
167        {
168            if !_v._unparsed {
169                return Ok(ActionConnectionIntegration::NotionIntegration(_v));
170            }
171        }
172        if let Ok(_v) =
173            serde_json::from_value::<Box<crate::datadogV2::model::OktaIntegration>>(value.clone())
174        {
175            if !_v._unparsed {
176                return Ok(ActionConnectionIntegration::OktaIntegration(_v));
177            }
178        }
179        if let Ok(_v) =
180            serde_json::from_value::<Box<crate::datadogV2::model::OpenAIIntegration>>(value.clone())
181        {
182            if !_v._unparsed {
183                return Ok(ActionConnectionIntegration::OpenAIIntegration(_v));
184            }
185        }
186        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::ServiceNowIntegration>>(
187            value.clone(),
188        ) {
189            if !_v._unparsed {
190                return Ok(ActionConnectionIntegration::ServiceNowIntegration(_v));
191            }
192        }
193        if let Ok(_v) =
194            serde_json::from_value::<Box<crate::datadogV2::model::SplitIntegration>>(value.clone())
195        {
196            if !_v._unparsed {
197                return Ok(ActionConnectionIntegration::SplitIntegration(_v));
198            }
199        }
200        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::StatsigIntegration>>(
201            value.clone(),
202        ) {
203            if !_v._unparsed {
204                return Ok(ActionConnectionIntegration::StatsigIntegration(_v));
205            }
206        }
207        if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::VirusTotalIntegration>>(
208            value.clone(),
209        ) {
210            if !_v._unparsed {
211                return Ok(ActionConnectionIntegration::VirusTotalIntegration(_v));
212            }
213        }
214
215        return Ok(ActionConnectionIntegration::UnparsedObject(
216            crate::datadog::UnparsedObject { value },
217        ));
218    }
219}