datadog_api_client/datadogV2/model/
model_entity_v3_api_spec_interface.rs1use serde::{Deserialize, Deserializer, Serialize};
5
6#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Serialize)]
9#[serde(untagged)]
10pub enum EntityV3APISpecInterface {
11 EntityV3APISpecInterfaceFileRef(Box<crate::datadogV2::model::EntityV3APISpecInterfaceFileRef>),
12 EntityV3APISpecInterfaceDefinition(
13 Box<crate::datadogV2::model::EntityV3APISpecInterfaceDefinition>,
14 ),
15 UnparsedObject(crate::datadog::UnparsedObject),
16}
17
18impl<'de> Deserialize<'de> for EntityV3APISpecInterface {
19 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
20 where
21 D: Deserializer<'de>,
22 {
23 let value: serde_json::Value = Deserialize::deserialize(deserializer)?;
24 if let Ok(_v) = serde_json::from_value::<
25 Box<crate::datadogV2::model::EntityV3APISpecInterfaceFileRef>,
26 >(value.clone())
27 {
28 if !_v._unparsed {
29 return Ok(EntityV3APISpecInterface::EntityV3APISpecInterfaceFileRef(
30 _v,
31 ));
32 }
33 }
34 if let Ok(_v) = serde_json::from_value::<
35 Box<crate::datadogV2::model::EntityV3APISpecInterfaceDefinition>,
36 >(value.clone())
37 {
38 if !_v._unparsed {
39 return Ok(EntityV3APISpecInterface::EntityV3APISpecInterfaceDefinition(_v));
40 }
41 }
42
43 return Ok(EntityV3APISpecInterface::UnparsedObject(
44 crate::datadog::UnparsedObject { value },
45 ));
46 }
47}