datadog_api_client/datadogV2/model/
model_action_query_spec_inputs.rs1use serde::{Deserialize, Deserializer, Serialize};
5
6#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Serialize)]
9#[serde(untagged)]
10pub enum ActionQuerySpecInputs {
11    String(String),
12    ActionQuerySpecInput(std::collections::BTreeMap<String, serde_json::Value>),
13    UnparsedObject(crate::datadog::UnparsedObject),
14}
15
16impl<'de> Deserialize<'de> for ActionQuerySpecInputs {
17    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
18    where
19        D: Deserializer<'de>,
20    {
21        let value: serde_json::Value = Deserialize::deserialize(deserializer)?;
22        if let Ok(_v) = serde_json::from_value::<String>(value.clone()) {
23            return Ok(ActionQuerySpecInputs::String(_v));
24        }
25        if let Ok(_v) = serde_json::from_value::<
26            std::collections::BTreeMap<String, serde_json::Value>,
27        >(value.clone())
28        {
29            return Ok(ActionQuerySpecInputs::ActionQuerySpecInput(_v));
30        }
31
32        return Ok(ActionQuerySpecInputs::UnparsedObject(
33            crate::datadog::UnparsedObject { value },
34        ));
35    }
36}